Ich habe den folgenden Code unter msvc Arbeits 2015:Kaskadiert Makros in gcc C++ 14 vs msvC++ 2015
#define CLASS_JS_PSG_PROPERTY_EX(PROPERTY, VALUE) \
static bool Get##PROPERTY(/*irrelevant params here...*/) \
{ \
...
some particular code
...
return true; \
}
#define CLASS_JS_PSG_PROPERTY(VALUE) \
CLASS_JS_PSG_PROPERTY_EX(##VALUE, VALUE)
...
#define kProp 1
CLASS_JS_PSG_PROPERTY_EX(Version, kProp)
CLASS_JS_PSG_PROPERTY(kProp)
Dies sollte Methoden GetVersion
und GetkProp
Namen definieren.
Nun, dies gibt den folgenden Fehler unter gcc C++ 14 (tatsächlich TDM-GCC-64):
pasting "(" and "kProp" does not give a valid preprocessing token
Wie soll in Reihenfolge geschrieben werden unter gcc zu kompilieren C++ 14 und msvc 2015?
Versuchen Sie 'CLASS_JS_PSG_PROPERTY_EX (VALUE, VALUE)'. – melpomene
In diesem Fall würde es versuchen, Funktionen mit einem Namen als "Get" Version "' oder "Get" kProp "' zu generieren. – mike
Das sollte nur mit '# VALUE' geschehen, nicht mit' VALUE'. – melpomene