2017-09-08 3 views
1

Ich versuche, ein Makro zu erstellen, um X zu definieren, aber 08 und 09 werden vom Compiler als stray-Operator fehlinterpretiert. Warum scheitern diese, wenn die anderen gut funktionieren?X Makro generieren stray Operator

#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

Wenn Sie die Ausgabe von Clang betrachten, wird es Ihnen das genaue Problem sagen: https://godbolt.org/g/WrphQz - Fehler: ungültige Ziffer '8' in Oktalkonstante LIST_TEST_X – xaxxon

Antwort

6

Integer Konstanten, die mit einem 0 beginnen sind Oktal Konstanten. Da 8 und 9 keine gültigen Ziffern sind, werden 08 und 09 nicht kompiliert.

Entfernen Sie entweder die führenden Nullen auf Ihren Konstanten oder ersetzen Sie sie durch Leerzeichen.

+0

Danke. Räume sind die Wahl. Der Code wird ein bisschen schöner aussehen. –

Verwandte Themen