Конкатенация макросов с использованием определения компилятора
Это должно быть просто, но я изо всех сил пытаюсь понять это. у меня естьPROJECT_NAME
как компилятор (g++
) -D
определить, и я хочу объединить его с другим текстом, чтобы сформировать имя пространства имен. Мой текущий подход заключается в следующем:
#define VERSION_NAMESPACE PROJECT_NAME ## Versioning
Для моего текущего проекта, я ожидаюVERSION_NAMESPACE
бытьSyren_DLLVersioning
, Вместо этого я получаю ошибку компилятора:
error: 'PROJECT_NAMEVersioning' has not been declared
Но согласноg++
вызов,PROJECT_NAME
определяется правильно:
ccache g++ ... -DPROJECT_NAME=Syren_DLL ...
ПочемуPROJECT_NAME
не заменяется до объединения?