Makro konkatenacja przy użyciu kompilatora definiuje

To powinno być proste, ale staram się to rozgryźć. mamPROJECT_NAME jako kompilator (g++) -D zdefiniuj i chcę połączyć go z innym tekstem, tworząc nazwę przestrzeni nazw. Moje obecne podejście to:

#define VERSION_NAMESPACE PROJECT_NAME ## Versioning

Oczekuję, że dla mojego obecnego projektuVERSION_NAMESPACE byćSyren_DLLVersioning. Zamiast tego otrzymuję błąd kompilatora:

error: 'PROJECT_NAMEVersioning' has not been declared

Ale wedługg++ połączenie,PROJECT_NAME jest poprawnie zdefiniowany:

ccache g++ ... -DPROJECT_NAME=Syren_DLL ...

Dlaczego jestPROJECT_NAME nie jest wymieniany, zanim nastąpi konkatenacja?

questionAnswers(1)

yourAnswerToTheQuestion