我真的很对,C标准保证_ _ func _ _ value始终是封装函数的名称,而在C++中(当然,我的意思是C++ 11)它可以是任何实现定义的字符串(例如,如果我们有不带参数的函数foo,我们会得到类似“某些字符串fdgdg asdfs fsdf sd”)的信息吗?
ISO/IEC 9899:2011
6.4.2.2预定义标识符
ISO/IEC 14882:2011
8.4.1总的来说[dcl.fct.def.general]
那是什么原因呢?如果我们无法收到当前的函数名称,是否返回类似“未知”的信息?
最佳答案
C++中函数的“名称”是什么?
“实现定义的字符串”使编译器在将所有这些信息填充到字符串中时具有一定的灵活性。它会向您(程序员)发送一条消息,告知您不要尝试执行字符串比较或解析,或者如果您想携带可移植性,则实际上不做任何事情,但记录值。
(您甚至无法将这些值相互比较,因为无法保证它们是唯一的。所有重载似乎都可能产生相同的字符串。因此不建议将其用于编译探查器统计信息。)