【发布时间】:2013-12-25 04:57:59
【问题描述】:
出于调试目的,我有以下宏来打印整数数组的内容:
#define PRINT_ARRAY(ary, num) \
int ai = 0; \
printf("{"); \
for(ai=0; ai < num; ++ai) { \
printf("%d", ary[ai]); \
if(ai < num-1) printf(", "); \
} \
printf("}\n");
我遇到的问题是,当我多次使用它时,一些编译器抱怨我正在重新定义ai。
有没有办法让每次调用宏的标识符都不同?我可以想出一个名称冲突更改非常低的命名方案,但我想让它自动进行。
我知道我可以使用函数,但我仍然很好奇,因为我想知道是否有办法使用宏来做到这一点。
【问题讨论】: