#include <stdio.h>
#define VAR cc
int main(void) {
int ccc = 9;
printf("hell loo %d", VARc);
return 0;
}
我对此代码的理解意味着预处理器找到VAR
的任何位置,它将用cc
替换它,因此printf
将具有正确定义的变量ccc
,但代码错误了。有人可以请帮助
我得到的错误是
test.c: In function ‘main’:
test.c:16: error: ‘VARc’ undeclared (first use in this function)
test.c:16: error: (Each undeclared identifier is reported only once
test.c:16: error: for each function it appears in.)
答案 0 :(得分:10)
那不行。预处理器可以处理整个令牌,而不是字符串。
如果你想要连接,你可以这样做:
workCompleted
答案 1 :(得分:0)
这不起作用的原因是:
标记化在预处理之前,换句话说,在宏扩展之前识别预处理文件中的标记。
由于 CPP贪婪,它会将VARc
视为与标识符类别相关的单个标记,并且与宏定义中的VAR
不同。这就是它无法替代的原因。
因此解决方案之一是使用串联或为VARc
创建另一个宏。