В проекте C ++ CodeBlocks я добавил следующие определения в настройки проекта, настройки компилятора, #define:
_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
Thisкод не компилируется:
char* commonDataDir;
#ifdef DATA_DIR
commonDataDir = DATA_DIR;
#endif
Глядя на файл вывода препроцессора, я вижу, что строка исходного кода расширяется следующим образом:
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 ++ по-разному.Как я могу это исправить?