📜  C 中的预定义标识符 __func__(1)

📅  最后修改于: 2023-12-03 14:39:41.418000             🧑  作者: Mango

C 中的预定义标识符 func

在 C 语言中,func 是一个预定义标识符,它是一个字符串字面值,表示当前函数名。这个标识符是 C99 标准新加入的,用于方便地获取当前函数的名称,避免了手动输入函数名带来的风险。

使用 func 可以方便地打印函数名、记录函数调用堆栈等操作,可以提高调试效率。下面是一个简单的例子:

#include <stdio.h>

void foo() {
    printf("Current function: %s\n", __func__);
}

int main() {
    foo();
    return 0;
}

上面的代码定义了一个名为 foo 的函数,该函数使用了 func 打印当前函数的名称。在主函数中,调用了 foo 函数并返回了值。

运行上面的代码会输出以下结果:

Current function: foo

由此可见,在函数中使用 func 能够方便地获取函数名并进行相应的操作。

注意,func 只能在函数内使用,不能在全局作用域或静态函数中使用。此外,func 是一个字符串字面值,不能修改它的内容。

另外,func 的类型是 const char[],包含了当前函数名的字符串常量。因此,可以使用 sizeof(func) 来获取当前函数名的长度(不包括 null 结尾符)。例如:

printf("Function name length: %lu\n", sizeof(__func__) - 1);

上面的代码可以打印出当前函数名的长度。

总之,func 是一个非常方便的预定义标识符,能够在函数内获取函数名,方便调试和编程。