我真的正确吗,C 标准保证 _ func _ _ value 始终是封闭函数的名称,而在 C++(我的意思是 C++11,当然)它可以是任何实现定义的字符串(例如,如果我们有没有参数的函数 foo,我们可以得到类似“一些字符串 fdgdg asdfs fsdf sd”)?
ISO/IEC 9899:2011
6.4.2.2 预定义标识符
语义
1 标识符 _ _ func _ _ 应由翻译器隐式声明,就好像紧跟在每个函数定义的左大括号之后,声明 static const char _ func _ [] = "function-name"; 出现,其中function-name 是词法封闭函数的名称。
ISO/IEC 14882:2011
8.4.1 一般 [dcl.fct.def.general]
8 函数局部预定义变量 _ _ func _ 被定义为形式的定义 static const char _ _ func _ _ [] = "function-name"; 已提供,其中function-name 是实现定义的 string。未指定此类变量是否具有与程序中任何其他对象不同的地址。
这是什么原因?如果我们无法接收当前函数名,返回类似“未知”的内容?