C ++ CodeBlocksプロジェクトでは、プロジェクト設定、コンパイラ設定、#defineに次の定義を追加しました。
_デバッグ DATA_DIR = \ "/ media / Shared / SiX / Data \"
これにより、次のg++コマンドラインが生成されます。
g ++ -Wall -g -fPIC -save-temps -D_DEBUG -DDATA_DIR = \ "/ media / Shared / SiX / Data \" -I ../Includes -c /media/Shared/SiX/SiXConfiguration/PathManager.cpp -o obj / Debug / PathManager.o
このコードはコンパイルされません:
char * commonDataDir; #ifdef DATA_DIR commonDataDir = DATA_DIR; #endif
プリプロセッサの出力ファイルを見ると、ソースコードの行が次のように展開されていることがわかります。
commonDataDir = / media / Shared / SiX / Data;
私が期待する:
commonDataDir = "/ media / Shared / SiX / Data";
同じコードがEclipseCDTから正しくコンパイルされます。
g ++ -D_DEBUG -DDATA_DIR = \ "/ media / Shared / SiX / Data \" -I "/ media / Shared / SiX(copy)/ Includes" -O3 -Wall -c -fmessage-length = 0 -fPIC -ggdb- MMD -MP -MF "PathManager.d" -MT "PathManager.d" -o "PathManager.o" "../PathManager.cpp"
したがって、同じコマンドラインパラメータはg++プロプロセッサによって異なる方法で処理されます。どうすればこれを修正できますか?