Конкатенация макросов с использованием определения компилятора

Это должно быть просто, но я изо всех сил пытаюсь понять это. у меня есть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 не заменяется до объединения?

Ответы на вопрос(1)

Ваш ответ на вопрос