#ifdef Symbol in makefile definieren
-
Hallo,
mein C-File sieht folgendermaßen aus:#include <stdio.h> #ifdef __interbus__ #include "interbus.h" #elif __profibus__ #include "profibus.h" #elif __profinet__ #include "profinet.h" #endif
Ist es möglich und wenn ja, wie, die Symbole __interbus__ etc. in einem makefile zu definieren? Ich habe jeweils für alle 3 Varianten ein makefile und möchte es gerne so einrichten, dass der Anwendungsentwickler sich nicht darum kümmern muss, welches System er nutzt und welche header-datei eingebunden werden muss. Er soll einfach nur das entsprechende makefile ausführen und dann wird automatisch die richtige *.h eingebunden.
Mein makefile für Interbus sieht momentan so aus:Interbus: main.o gcc -o Interbus main.o main.o: main.c gcc -c main.c
-
Wenn du in dem makefile schon weißt was du einbinden willst kannst du doch direkt das richtige einbinden ohne den Umweg über defines zu gehen.
-
Ja, es ist so gedacht, dass der Programmierer des C-Files sich nicht darum kümmern muss, welches Headerfile inkludiert werden muss.
Er soll im C-File z.B. einfach nur eine Funktion loadDriver(); aufrufen.
Und ob diese jetzt den Interbus oder den ProfiBus initialisiert, soll ihm egal sein. Später soll dann einfach nur das entsprechende makefile ausgeführt werden, je nachdem ob ich meine System auf dem einen oder anderen Bus ausführen will.
Zusammengefasst will ich damit sagen, dass ich wenn ich das makefile ausführe, weiß was ich inkludieren will. Während ich es im C-File noch nicht weiß.
-
Mit der Option -D geht das
gcc -D__interbus__ foo.c
http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Preprocessor-Options.html#Preprocessor-Options
Aber die Benennung von __interbus__ ist nicht erlaubt. Bezeichner mit zwei __ sind dem Compiler vorbehalten! Daher nimm lieber einen anderen Namen.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Die Option -D habe ich auch gerade gefunden. Danke für den Hinweis mit dem __. Sorry das der Thread im falschen Bereich gelandet ist, aber ich hatte ursprünglich gedacht, dass es ein Problem von C ist.