私はコマンドラインからマクロをオーバーライドしたいと思います。私は私のプログラムをコンパイルするときに私が望む何コマンドラインからマクロをオーバーライド
#define MY_FOO 1
は、このマクロの値を設定することです:どこか私の元で、このような定義がある
g++ -DMY_FOO=2 ...
はしかし、その後、マクロがありますソースコードによって古い値1に再定義されます。問題は、最初にマクロを定義するソースの部分を所有していないということです。それは私自身のコードだった場合、私は簡単に書くことができる
#ifndef MY_FOO
#define MY_FOO 1
#endif
私の問題はなくなるだろう。それで、g ++を使ってコマンドラインでマクロを指定して、ソースコードがそれを再定義できないようにする方法はありますか?
なぜこれをやりたいですか?実際の問題を教えてもらうと別の方法があるかもしれません – doctorlove
ヘッダーファイル自体の中に定義する必要がありますか、 '#include'の後に'#undef'するだけですか? – svk
本当の問題は、いくつかの出力ストリームのデバッグレベルがconfig.hを使って設定されているプロジェクトに取り組んでいることです。これはautotoolsによって生成されます。しかし、私は単純なテストプログラムをコンパイルして、より高いデバッグレベルでパッケージに入れたいだけで、パッケージ全体を再構成したくないのです。かなり時間がかかるからです。 – Sh4pe