关于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的值
#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()的函数名)时,不做替换。