0

我试图让 x 宏与 do while 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;
}
4

1 回答 1

1

您不能用 包装 X 宏do while(0),因为它在语法上对于它所针对的枚举用例来说是不正确的。

在您的检查器脚本中寻找异常机制,或将 X 宏放入排除在检查之外的单独源文件中。

于 2018-04-11T21:51:42.383 回答