Header-Datei-Namen als Argument
-
21-09-2019 - |
Frage
Ziel: Ich habe eine Liste von Header-Dateien (etwa 50 von ihnen), Und jede Header-Datei hat einige Arrays mit konstanten Elementen. Ich brauche ein Programm zu schreiben, um die Elemente des Arrays zu zählen. Und schafft eine andere Form der Ausgabe (die durch die Hardware-Gruppe verwendet wird).
Meine Lösung: Ich enthalten alle 50 ungeradee Dateien und schrieb eine Anwendung. Und dann abgeladen ich alle Elemente des Arrays in das angegebene Format.
Meine Umwelt: Visual Studio V6, Windows XP
Mein Problem: Jedes Mal gibt es einen neuen Satz von Header-Dateien, ich bin jetzt die VC ++ Projekteinstellungen Punkt auf den neuen Satz von Header-Dateien zu ändern, und dann wieder aufzubauen.
Meine Frage:
Ein bisschen in-sane aber
- Gibt es eine Möglichkeit das zu erwähnen, Header von einer Befehlszeile Argumente, oder was?
- Ich will nur wieder die Zusammenstellung der vermeiden Quelle jedes Mal ...
Lösung
Standard C und C ++ können Sie einen Makro in verwenden:
#include SOME_MACRO_HERE
Der erweiterte Wert von SOME_MACRO_HERE
muss für eine #include
Richtlinie korrekt aussehen.
Damit im Prinzip könnte man die MSVC äquivalent verwenden:
cc -DSOME_MACRO_HERE='<actualheader.h>' sourcefile.c
Oder:
cc -DSOME_MACRO_HERE='"actualheader.h"' sourcefile.c
Das scheint Ihnen eine Antwort auf Ihre erste Kugel-Frage zu finden.
Ich bin nicht davon überzeugt, Sie Neuübersetzung vermeiden können -. Sie können (vielleicht) zu vermeiden Bearbeitung, obwohl
Andere Tipps
Header werden bei der Kompilierung enthält, so dass keine Mittel zur Veränderung / hinzufügen Header zur Laufzeit.
Warum gehst du nicht einfach eine kurze schreiben und einfache Perl-Skript, das Header analysieren werden und zählen Anzahl der Array-Elemente?
Eigentlich kam ich an einer Lösung, die funktioniert.
- Schritt-1: Die Header-Datei-Name würde sein vordefinierte
- Schritt-2: Headers (set) mit unterschiedlichem Parameterwerte werden gesetzt in verschiedene Ordner
- Schritt-3: Während der Zusammenstellung, zeigen Sie auf die Weg mit dem entsprechenden Header
Die Lösung ist nicht das, was ich wollte, aber dennoch war es am besten konnte ich herausfinden.