gpt4 book ai didi

c - 在 C 宏中模拟作用域

转载 作者:太空狗 更新时间:2023-10-29 15:52:25 25 4
gpt4 key购买 nike

我有以下宏来打印出整数数组的内容以进行调试:

#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

有没有办法让每次调用宏的标识符都不同?我可以想出一个名称更改冲突非常少的命名方案,但我想让它自动进行。

我知道我可以使用一个函数,但我仍然很好奇,因为我想知道是否有办法用宏来做到这一点。

最佳答案

为什么不使用经典的 do-while 技巧?例如:

#define FOO(EXPR) \
do { \
(EXPR); \
} while(0)

关于c - 在 C 宏中模拟作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com