Vorrei eseguire l'override di una macro dalla riga di comando. Da qualche parte nella mia fonte, v'è una definizione come questa:Ignora macro dalla riga di comando
#define MY_FOO 1
Quello che vorrei è quello di impostare il valore di questa macro quando compilo il mio programma:
g++ -DMY_FOO=2 ...
Ma poi, la macro è ridefinito dal codice sorgente al suo vecchio valore 1. Il problema è che non possiedo la parte della sorgente che definisce la macro in primo luogo. Se fosse il mio codice, potrei semplicemente scrivere
#ifndef MY_FOO
#define MY_FOO 1
#endif
E il mio problema sarebbe scomparso. Quindi c'è modo di specificare una macro sulla riga di comando usando g ++ in modo che il codice sorgente non possa ridefinirlo?
Perché vuoi farlo? Potrebbe esserci un altro modo se ci dici il vero problema – doctorlove
Ti serve avere la tua definizione all'interno del file di intestazione stessa, o funzionerebbe semplicemente '# undef' dopo il tuo' # include'? – svk
Il vero problema è che sto lavorando a un progetto in cui il livello di debug di diversi flussi di output è impostato usando config.h, che a sua volta viene generato dagli autotools. Ma voglio solo compilare un semplice programma di test nel mio pacchetto con un livello di debug più alto e non voglio riconfigurare l'intero pacchetto, perché questo richiede un po 'di tempo. – Sh4pe