Forum: Mikrocontroller und Digitale Elektronik Kommandozeilen-Aufruf durch den Precompiler


von Hans W. (hans_wurst)


Lesenswert?

Hallo,

ist es möglich einen Code vom Precompiler ausführen zu lassen, der auf 
die Kommandozeile zugreift? Ich würde gerne den zurückgegebenen Wert als 
String in den eigentlichen Code (für den Mikrocontroller) einfließen 
lassen.

Ganz grob habe ich es mir in etwa so vorgestellt:
1
#RueckgabeWert = cmd.exe meinProgramm.exe
2
#define   meinStringImController    RueckgabeWert

von Karl H. (kbuchegg)


Lesenswert?

Das musst du in deiner Toolchain regeln.
Entweder im Makefile oder in einer Batchdatei, je nachdem was du 
benutzt.

Normalerweise haben Compiler einen Commandline Switch, mit dem es 
möglich ist, irgendwelche #define von aussen zu setzen. Oft gibt es auch 
eine Möglichkeit wie man diesem Makro einen Wert geben kann, so dass man 
effektiv beim Compileraufruf das Equivalent zu
#define MAKRO  WERT
erzeugen kann.

-> Compiler-Doku durchforsten.

Wenn das nicht geht, kannst du immer noch dein erzeugendes Programm so 
manipulieren, dass es seine Ausgabe in eine Datei macht und diese dann 
per #include in dein C-Programm hineinziehen. Das wird sogar recht 
häufig so gemacht, wenn es darum geht irgendwelche Tabellen oder Bilder 
oder dergleichen, die von einem Programm generiert werden, im C-Code 
weiterzuverwenden.

Aber einen Compiler, der es einem C-Code ermöglicht, während das 
Compilierens ein anderes Programm aufzurufen, würde wohl kein Entwickler 
aus naheliegenden Gründen benutzen wollen.

von Sven P. (Gast)


Lesenswert?

Direkt geht das nicht. Dem GCC (eigentlich dem CPP) kann man mit -D 
zusätzliche Konstanten mitgeben, etwa so:
1
$ gcc -D"HEUTE=\"$(date)\""

Sonst wäre auch der Makroprozessor M4 ganz brauchbar für sowas...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.