Übergabe Namen vom Compiler an C

Hey,

lassen sich dinge definieren, die man im Präprozessor von C abfragen kann, um dann entsprechend per Compiler-Eingaben auf Alternativen zuzugreifen?

Angenommen ich möchte die Wahl bieten einen Time-Memory Tradeoff zu machen und hinterlege den Wert TRADE = TRUE/FALSE, mit TRUE als Standardwert.

Also Aufruf (vereinfacht):
Code:
gcc TRADE=TRUE

definiert in C Variablen hardcoded vor. Wie würde man das nennen?

Ich weiß. dass man mittels
Code:
gcc -D TRADE
das gleiche macht, als würde man
Code:
#define TRADE
notieren. Lässt sich damit auch gcc -D TRADE=TRUE eingeben? Für mein Vorhaben spielt das keine Rolle, aber wäre doch nett zu wissen.
 

Danke für die schnelle Antwort. Wie sieht es aus, wenn ich dem Makefile über "make" solche Befehle hinzugeben möchte? Wie wird das dann aufgerufen?

Ich würde tippen (nicht wissen):
Code:
make TRADE_OFF=TRUE

Mit
Code:
TRADE_OFF = -D TRADEifeq "$(TRADE_OFF)" "FALSE"    TRADE_OFF=endif

im Makefile. So kann man das nämlich nur deaktivieren.

Innerhalb der Makefile würde ich dann entsprechend

Code:
gcc $(TRADE_OFF)
aufrufen und
Code:
gcc -D TRADE

bekommen.
 
z.B:
Code:
CC ?= cc                                                                               
CFLAGS += -Wall -Wpedantic                                                             
MYFLAGS ?=                                                                             
ifdef TRADE_OFF                                                                        
    MYFLAGS += -D TRADE                                                                
endif                      
...
$(CC) $(CFLAGS) -o $(TARGET) $(TARGET).c $(MYFLAGS)
 
Zurück
Oben