我想使用 gcc 预处理器编写几乎相同的代码声明 500 次。假设出于演示目的,我想使用一个宏FOR_MACRO:

#define FOR_MACRO(x) \
    #for i in {1 ... x}: \
        const int arr_len_##x[i] = {i};

并调用 FOR_MACRO(100) 将转换为:
const int arr_len_1[1] = {1};
const int arr_len_2[2] = {2};

...

const int arr_len_100[100] = {100};

最佳答案

这不是一个好主意:

虽然原则上是可能的,但使用预处理器意味着您必须至少手动展开循环一次,最终会得到一些任意实现定义的循环深度限制,并且所有语句都将在一行中生成。

最好使用您选择的脚本语言来生成代码(可能在单独的可包含文件中)并将其与您的构建过程集成。

关于c - 在预处理器阶段展开的循环宏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19117228/

10-14 20:29
查看更多