X Macro生成杂散运算符

Hoà*_*rần 1 c++ macros

我尝试创建一个宏来定义X,但08和09被编译器误解为杂散运算符.当其他人工作正常时,为什么这些失败?

#define LIST_TEST_X \
    X(A,01)\
    X(B,02)\
    X(C,03)\
    X(D,04)\
    X(E,05)\
    X(F,06)\
    X(G,07)\
    X(H,08)\
    X(I,09)\
    X(K,10)

enum XEnum
{
#define X(A, b)  A=b,
    LIST_TEST_X
#undef X
};
Run Code Online (Sandbox Code Playgroud)

120*_*arm 6

以a开头的整数常量0是八进制常量.由于89不是有效数字,08并且09不会编译.

删除常量上的前导零,或用空格替换它们.