在C++中的碼塊項目添加以下定義的項目設置,編譯器設置,#定義:-D選項選自G ++命令行錯誤地擴大
_DEBUG 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
看着準備rocessor輸出文件,我看到源代碼行以這種方式展開:
commonDataDir = /media/Shared/SiX/Data;
我想到:
commonDataDir = "/media/Shared/SiX/Data";
相同的代碼是從Eclipse CDT的正確編譯:
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 ++協處理器對相同的命令行參數進行不同的處理。我怎樣才能解決這個問題?
謝謝,這個伎倆。 – 2010-10-18 13:25:46