关于C语言的宏问题

[复制链接]
查看11 | 回复2 | 2009-4-23 00:35:26 | 显示全部楼层 |阅读模式
#include
#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的值

回复

使用道具 举报

千问 | 2009-4-23 00:35:26 | 显示全部楼层
o刚才没看完这个代码。。 你想做的这个事情是不可能的。 预处理器的工作在编译器之前, 所以他不可能按i的值进行替换,只能按字面意义进行替换...
回复

使用道具 举报

千问 | 2009-4-23 00:35:26 | 显示全部楼层
在宏代换的过程中,遇到字符常量、字符串常量和用户标识符(函数调用printx()的函数名)时,不做替换。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行