簡體   English   中英

如何在宏中使用__func__

[英]How to use __func__ in macros

我正在嘗試創建一個宏,該宏將根據調用宏的函數名稱來修改數據結構中的字段,請參見下文:

#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";

您不能在編譯時使用其值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM