Ich würde gerne ein Makro bauen, das TABLE_ENTRY(FOO) zu #ifdef N_FOO { "FOO", N_FOO }, #endif expandiert - also einen Tabelleneintrag generiert, falls das Preprocessor-Symbol N_xyz definiert ist. Ziel ist, dass ich nachher im Programm schreiben kann: static const struct { const char *s; int v; } table[] = { TABLE_ENTRY(FOO) TABLE_ENTRY(BAR) TABLE_ENTRY(BAZ) TABLE_ENTRY(TOTO) TABLE_ENTRY(TITI) TABLE_ENTRY(TATA) }; und table[] dann genau die Einträge enthält, für die der entsprechende Wert auch definiert ist. Die Expansion TABLE_ENTRY(FOO) => { "FOO", N_FOO }, ist ja kein Problem, aber die Abfrage, ob N_FOO definiert ist, also das #ifdef - #endif außenrum, will nicht klappen. Wenn ich so etwas wie #define TABLE_ENTRY(x) \ #ifdef N_##x \ { #x, N_##x }, \ #endif versuche, beschwert sich CPP: t.c:2:3: error: '#' is not followed by a macro parameter Ideen? TIA T. -- Tilman Schmidt Phoenix Software GmbH Bonn, Germany --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org