由于某些原因,我在文档的任何地方都没有找到这个问题的直接答案。
我的朋友说我可以直接使用__func__
并分配给它,而不会实际声明它。
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");
开始函数时声明它,因为它已经被声明并且将由编译器处理?
如果这听起来像一个基本问题,我很抱歉,但我很困惑!
答案 0 :(得分:3)
您不需要声明或定义它。在函数定义中,您的代码可以隐式使用它。
void func_with_fancy_name()
{
puts(__func__); // Will print the function name
}
分配是另一回事。你不能这样做。 "中的const
说明符,好像"宣言应该阻止你。
答案 1 :(得分:2)
我的朋友说我可以直接使用
__func__
[...]
是的,你可以。请注意这部分
[...]应由译者隐式声明为 如果,紧跟在每个函数定义的左大括号后面 声明
static const char __func__[] = "function-name";
出现,[...]
所以,你不需要明确。
不,你不能。这是一个常数。.. 并分配给它,