Fro*_*art 8 c c++ c99 c++11 c11
我是否正确C标准保证_ _ func _ _ value始终是封闭函数的名称,而在C++中(我的意思是C++ 11),它可以是任何实现定义的字符串(例如,如果我们有没有参数的函数foo,我们可以得到像"Some string 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是实现定义的字符串.未指定此变量的地址是否与程序中任何其他对象的地址不同.
这是什么原因?如果我们无法接收当前的功能名称,请返回类似"未知"的内容?
Ben*_*igt 14
什么是C++中函数的"名称"?
"实现定义的字符串"为编译器提供了一些灵活性,可以将所有这些信息填充到字符串中.并且它向程序员发送一条消息,您不应该尝试执行字符串比较或解析,或者实际上除了记录值之外还要执行任何操作(如果您想要可移植性).
(你甚至无法将这些值相互比较,因为不能保证它们是唯一的.似乎所有重载都可能产生相同的字符串.因此使用它来编译分析器统计信息是不明智的.)
| 归档时间: | 
 | 
| 查看次数: | 1085 次 | 
| 最近记录: |