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?