关于C语言的宏问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:23:16
#include <stdio.h>

#define printx(n) printf ("%i\n", x ## n)

int main (void)
{
int i;
int x1 = 100, x2 = 200, x3 = 300;

for ( i = 1; i <= 3; ++i )
{
printx(i);
}

return 0;
}
问题:为什么不能输出x1,x2,x3的值

o 刚才没看完这个代码。。

你想做的这个事情是不可能的。 预处理器的工作在编译器之前, 所以他不可能按i的值进行替换,只能按字面意义进行替换

在宏代换的过程中,遇到字符常量、字符串常量和用户标识符(函数调用printx()的函数名)时,不做替换。