c stringification和__function__

Ash*_*ian 0 c c-preprocessor

我正在尝试添加一个ac宏,它编译一个初始化为函数名的局部变量.

例如.

 void foo (void)
 {
 stubmacro;
 }


 void bar (void)
 {
 stubmacro;
 }
Run Code Online (Sandbox Code Playgroud)

基本上编译为:

 void foo (void)
 {
 char*function_name="foo";
 }


 void bar (void)
 {
 char*function_name="bar";
 }
Run Code Online (Sandbox Code Playgroud)

我一直很难使用C预处理器宏,特别是在字符串化方面

宏使用预定义的函数 ..

#define stubmacro char*function_name=##_FUNCTION__
Run Code Online (Sandbox Code Playgroud)

无论如何,我的stubmacro宏是错误的,我会喜欢它的一些帮助

Jen*_*edt 5

只需使用__func__,这是一个预定义的字符串,可以满足您的需求:

标识符__func__应由翻译者隐式声明,就像紧跟每个函数定义的左括号一样,声明

static const char __func__[] = "function-name"; 
Run Code Online (Sandbox Code Playgroud)

出现了,其中function-name是词法封闭函数的名称.