我正在尝试添加一个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宏是错误的,我会喜欢它的一些帮助
只需使用__func__,这是一个预定义的字符串,可以满足您的需求:
标识符
__func__应由翻译者隐式声明,就像紧跟每个函数定义的左括号一样,声明
static const char __func__[] = "function-name";
Run Code Online (Sandbox Code Playgroud)
出现了,其中function-name是词法封闭函数的名称.