如何在C中为__func__赋值?

时间:2017-01-12 07:44:44

标签: c char const variable-assignment

由于某些原因,我在文档的任何地方都没有找到这个问题的直接答案。

我的朋友说我可以直接使用__func__并分配给它,而不会实际声明它。

documentation说:

1. The identifier __func__ shall be implicitly declared by the translator as
if, immediately following the opening brace of each function definition, the
declaration

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

appeared, where function-name is the name of the lexically-enclosing function.

那么,这是否意味着,我应该在每次使用static const char __func__[] = "function-name";而不是strcpy(__func__, "function-name");开始函数时声明它,因为它已经被声明并且将由编译器处理?

如果这听起来像一个基本问题,我很抱歉,但我很困惑!

2 个答案:

答案 0 :(得分:3)

您不需要声明或定义它。在函数定义中,您的代码可以隐式使用它。

void func_with_fancy_name() 
{
  puts(__func__); // Will print the function name
}

分配是另一回事。你不能这样做。 "中的const说明符,好像"宣言应该阻止你。

答案 1 :(得分:2)

  

我的朋友说我可以直接使用__func__ [...]

是的,你可以。请注意这部分

  

[...]应由译者隐式声明为   如果,紧跟在每个函数定义的左大括号后面   声明

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

出现,[...]

所以,你不需要明确。

  

.. 并分配给它,

不,你不能。这是一个常数。