0x9*_*x90 7 c gcc linux-kernel c-preprocessor
我想用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};
这不是一个好主意:
尽管原则上可行,但使用预处理器意味着您必须至少手动展开循环一次,最终会在循环深度上产生一些任意实现定义的限制,并且所有语句将在一行中生成.
更好地使用您选择的脚本语言来生成代码(可能在单独的可包含文件中)并将其与您的构建过程集成.