How to cause macro expansion before concatenation?
-
19-12-2020 - |
Frage
#define JNI_DECLARE( classname, methodname ) \
classname ## methodname( JNI* env )
#define JAVA_CLASS Java_com_example
void JNI_DECLARE( JAVA_CLASS, open ) {}
This expands to:
void JAVA_CLASS_open( JNI* env ) {}
How do I get:
void Java_com_example_open( JNI* env ) {}
?
Lösung
#define JNI_DECLARE_INNER( classname, methodname ) \
classname ## _ ## methodname( JNI* env )
#define JNI_DECLARE( classname, methodname ) \
JNI_DECLARE_INNER(classname, methodname)
see more here: C Preprocessor, Stringify the result of a macro
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow