C语言中宏的使用
Usage of macro in C language
本文关键字:语言 更新时间:2023-10-16
我需要使用宏连接字符串来生成函数名。
#define CONCAT(a,b,c) a ## b
int i=1;
CONCAT(a,i)
这段代码给出了ai
作为结果,而我想要的是a1
。
由于我的源代码中有许多函数,我不想枚举它们。
我的目标:
for(int i=0;i<100;i++)
{
Funi1();//here i should be from 0 to one hundred
Funi2();
Funi3();
Funi4();
..
}
@Potatoswatter
我写了一个脚本来扩展它,输出文件花费了几百行。@Eric历险记》
这是不可能的,因为宏是在预处理阶段展开的。因此,它不能取一个变量的值并连接。
关于__COUNTER__
预定义宏,你在GCC和VC上有它。它对你有帮助吗?
#include <stdio.h>
#define FUNC2(x,y) x##y
#define FUNC1(x,y) FUNC2(x,y)
#define FUNC(x) FUNC1(x,__COUNTER__)
int FUNC(my_unique_prefix);
int FUNC(my_unique_prefix);
int main() {
my_unique_prefix0 = 0;
printf_s("n%d",my_unique_prefix0);
my_unique_prefix0++;
printf_s("n%d",my_unique_prefix0);
}
从这里的例子
您可以使用:gcc -E sourccode .c预编译它并观察它,它只是替换变量名,而不是获取值和计算,因此不可能让它像您想要的那样工作
试试LINE宏,它会给你数字:)如果你不关心1+1+1+1就像静态int FUNCADD(一次,行) = 1;如果(FUNCADD(一次,行)> 0)
相关文章:
- 不同语言中相同代码的不同行为
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- r语言 - C++ 类型为"const std ::?
- 通用C++/Python 多语言的存在
- 为什么我的 EnumWindowProc 不能用 C 语言编译?
- 了解算法的性能差异(如果以不同的编程语言实现)
- Rextester 语言编译C++问题
- 如何将多种语言设置放在单个 .clang 格式文件中
- 不同语言中的模运算符差异
- 刚接触C++,难以理解语言的细微差别
- 为什么开发人员将C / C ++用于嵌入式系统,而不是像Python这样的高级语言与C相比?
- 我们可以用 C 语言嵌套 #define 和 #if 吗?
- 我的C++语言蛮力算法有问题
- 如何删除已输入的书以及如何使标题,语言和名称在上面放置空格不会出错?
- 为什么编程语言被编译为汇编程序而不是二进制?
- QDirIterator语言 - No hasNext not FilePath reaction
- "C.UTF-8" C++ Windows 上的语言环境?
- 了解 cin.fail() 和 cin.clear语言 - Vector 追加程序
- '_HAS_CXX17'宏是否可用于自定义项目标头以启用C++17 语言集功能?
- 有没有办法为macOS上的C++程序指定自定义语言环境目录