2017-09-08 82 views
1

我嘗試創建一個宏來定義X,但08和09被編譯器誤解爲雜散運算符。爲什麼這些失敗時,其他人工作正常?與一開始0X宏生成雜散運算符

#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 
}; 
+0

如果你從鐺輸出,它會告訴你確切的問題:https://godbolt.org/g/WrphQz - 錯誤:在八進制常量 LIST_TEST_X – xaxxon

回答

6

整型常量八進制常量。由於89不是有效數字,因此0809將不會編譯。

要麼刪除常量上的前導零,要麼將它們替換爲空格。

+0

由於無效的數字「8」。空間是選擇。代碼看起來會更好一些。 –