Я хотел бы переопределить макрос из командной строки. Где-то в моем источнике, есть определение, как это:Переопределить макрос из командной строки
#define MY_FOO 1
То, что я хотел бы, чтобы установить значение этого макроса, когда я скомпилировать свою программу:
g++ -DMY_FOO=2 ...
Но тогда, макрос переопределен исходным кодом его старое значение 1. Проблема в том, что я не являюсь частью источника, который определяет макрос в первую очередь. Если бы это был мой собственный код, я мог бы просто написать
#ifndef MY_FOO
#define MY_FOO 1
#endif
И моя проблема исчезла бы. Так можно указать макрос в командной строке с помощью g ++, чтобы исходный код не мог его переопределить?
Почему вы хотите это сделать? Может быть, есть другой способ, если вы скажете нам реальную проблему. – doctorlove
Нужно ли вам это определение в самом файле заголовка, или оно будет работать просто «# undef» после вашего '# include'? – svk
Реальная проблема заключается в том, что я работаю над проектом, в котором уровень отладки нескольких выходных потоков задается с помощью config.h, который, в свою очередь, генерируется autotools. Но я хочу только собрать одну простую тестовую программу в моем пакете с более высоким уровнем отладки, и я не хочу перенастраивать весь пакет, потому что это занимает довольно много времени. – Sh4pe