Ich möchte ein Makro von der Befehlszeile überschreiben. Irgendwo in meiner Quelle, gibt es eine Definition wie folgt:Makro von der Befehlszeile überschreiben
#define MY_FOO 1
Was Ich mag würde, ist der Wert dieses Makro zu setzen, wenn ich mein Programm zusammenstellen:
g++ -DMY_FOO=2 ...
Aber dann wird das Makro neu definiert durch den Quellcode zu seinem alten Wert 1. Das Problem ist, dass ich nicht den Teil der Quelle besitze, die das Makro an erster Stelle definiert. Wenn es mein eigener Code wäre, könnte ich einfach schreiben
#ifndef MY_FOO
#define MY_FOO 1
#endif
Und mein Problem wäre weg. Gibt es also einen Weg, ein Makro in der Kommandozeile mit g ++ zu spezifizieren, so dass der Quellcode es nicht neu definieren kann?
Warum möchten Sie dies tun? Es kann einen anderen Weg geben, wenn Sie uns das wirkliche Problem sagen – doctorlove
Benötigen Sie es, um Ihre Definition innerhalb der Header-Datei selbst zu haben, oder würde es funktionieren, einfach "# undef" es nach Ihrem "# include"? – svk
Das eigentliche Problem ist, dass ich an einem Projekt arbeite, bei dem die Debug-Ebene mehrerer Ausgabestreams mithilfe von config.h festgelegt wird, das wiederum von den Autotools generiert wird. Aber ich möchte nur ein einfaches Testprogramm in meinem Paket mit einem höheren Debug-Level kompilieren und ich möchte das ganze Paket nicht neu konfigurieren, weil das einige Zeit in Anspruch nimmt. – Sh4pe