Ich habe ein C-Programm mit vielen Optimierungen, die mit #define
s aktiviert oder deaktiviert werden können. Wenn ich mein Programm starte, würde ich gerne wissen, welche Makros zur Kompilierzeit definiert wurden.Name und Wert eines Makros drucken
Also versuche ich eine Makrofunktion zu schreiben, um den tatsächlichen Wert eines Makros zu drucken. Etwas wie folgt aus:
SHOW_DEFINE(X){\
if(IS_DEFINED(X))\
printf("%s is defined and as the value %d\n", #X, (int)X);\
else\
printf("%s is not defined\n", #X);\
}
aber ich weiß nicht, wie es funktioniert, und ich vermute, dass es nicht möglich ist, hat jemand eine Idee, wie es zu tun hat?
(Beachten Sie, dass dies muss auch kompilieren, wenn das Makro nicht definiert ist!)
Akzeptiert für die Antwort von m4. Dies wird leicht, wenn Sie einen weiteren Vorverarbeitungsschritt hinzufügen. Ich habe SHOW_DEFINE (X, Y, Z ...) gemacht, was noch besser ist. Aber es macht Sens, weil ich m4 für andere Sachen brauche. – Ben