Wahrscheinlich sollte mit einem Befehlszeilenparameter ausgeführt werden, aber wenn Sie dies innerhalb des Makefiles tun müssen, können Sie Folgendes verwenden:
%Vor% -D
gibt eine Kompilierzeit #define
an, die MYSTRING
auf "hello"
setzt.
Wenn Sie MYSTRING
im Code verwenden, wird diese in die Zeichenfolge umgewandelt. In diesem Beispielcode übergebe ich es einfach an printf
, aber Sie könnten es genauso gut an fopen
weitergeben, wie Sie es benötigen.
Wenn Sie diese ausführbare Datei ausführen, lautet die Ausgabe:
%Vor%Das ist etwas anderes, als einfach den Wert im Quellcode hart zu codieren - Sie müssen neu kompilieren, wenn Sie die Zeichenfolge jemals ändern wollen (deshalb habe ich im ersten Absatz einen Befehlszeilenparameter vorgeschlagen).
Sie möchten dies über eine String-Verkettung behandeln:
Makefile:
%Vor%Dann hätten Sie in Ihrer C-Datei etwas wie:
%Vor%Der Compiler verkettet die Zeichenfolgen während der Vorverarbeitung zu einer einzigen Zeichenfolge.
Wenn Sie gcc oder einen ähnlichen Compiler verwenden, können Sie die -D
-Flagge, dokumentiert in der Manpage
Um einen schnellen Überblick zu geben, können Sie gcc -DSYMBOL=1
ausführen, und dies würde dazu führen, dass der Compiler dies zum Code hinzufügt:
Sie können also in Ihrem Makefile eine make-Variable setzen und sie dann an die gcc-Befehlszeilenoptionen übergeben.
Ich bin Anfänger beim Makefile und habe schließlich einen besseren Weg gefunden, Variablen von makefile
nach #define
zu übergeben, und wird nicht von Escape beeinflusst.
Sie können folgenden Code verwenden
%Vor%ist gleich
%Vor%Sie können folgenden Code verwenden
%Vor%ist gleich
%Vor%und main.c
%Vor%