在x时使x宏工作

时间:2018-04-11 21:49:07

标签: c c-preprocessor x-macros

我正在努力让x宏与0一起工作,因为checkpatch.pl对此感到不满意。但是,它打破了逻辑。想知道是否有人有任何建议让它发挥作用?

#define X_TYPES do { \
        X(BABA, "baba") \
        X(INVALID, "invalid") \
} while (0)

#define X(type, name) type,
enum x_type {
    X_TYPES
};
#undef X                                                       
#define X(type, name) name,                                   
const char *x_name[] = {
    X_TYPES
};
#undef X    

int main()
{
    return 0;
}

1 个答案:

答案 0 :(得分:1)

你不能用do while(0)包装X宏,因为它在语法上对于它的目标枚举用例是不正确的。

在您的检查程序脚本中寻找异常机制,或将X宏放入一个不被检查的单独源文件中。