gpt4 book ai didi

c - 如何在宏中使用 __func__

转载 作者:太空宇宙 更新时间:2023-11-04 08:39:47 26 4
gpt4 key购买 nike

我正在尝试创建一个宏,该宏将根据调用宏的函数名称修改数据结构中的字段,请参见下文:

#define REGISTER(func_name) data.func_name##_n++

struct data
{
int func_name_n;
} data;

void func_name(void)
{
REGISTER(func_name);
}

int main(void)
{
func_name();
return 0;
}

我想使用 __func__ 宏,这样用户只需键入 REGISTER 函数名称就会自动传递:

#define REGISTER(func_name) data.func_name##_n++
#define REGISTER_WRAP REGISTER(__func__)

REGISTER_WRAP;

但我收到以下错误:

error: ‘struct data’ has no member named ‘__func___n’

有没有办法在宏中使用 __func__ 并获得所需的结果?

最佳答案

__func__ 不是宏。这是一个隐式创建的变量:

static const char __func__[] = "function-name";

你不能在编译时使用它的值。

关于c - 如何在宏中使用 __func__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24232678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com