如何在连接之前引起宏扩展?

时间:2011-08-12 19:29:13

标签: c c-preprocessor stringification

#define JNI_DECLARE( classname, methodname ) \
     classname  ## methodname( JNI* env ) 

#define JAVA_CLASS Java_com_example
void JNI_DECLARE( JAVA_CLASS, open ) {}

这扩展为:

void JAVA_CLASS_open( JNI* env ) {}

我如何获得:

void Java_com_example_open( JNI* env ) {}

1 个答案:

答案 0 :(得分:12)

#define JNI_DECLARE_INNER( classname, methodname ) \
     classname  ## _ ## methodname( JNI* env )
#define JNI_DECLARE( classname, methodname ) \
     JNI_DECLARE_INNER(classname, methodname)

在此处查看更多内容:C Preprocessor, Stringify the result of a macro