301
|
Matt Joiner · 技术社区 · 14 年前 |
![]() |
1
353
请注意,它不是宏,在预处理过程中没有特殊含义。
对于非标准宏,您需要查阅编译器的文档。Visual C++扩展包含在C++编译器的MSDN文档中 "Predefined Macros" "Function Names as Strings." |
![]() |
2
171
尽管没有完全回答最初的问题,但这可能是大多数谷歌用户想要看到的。
|
![]() |
3
85
main.cpp
编译并运行:
输出:
您可能还对带有函数名的堆栈跟踪感兴趣: print call stack in C or C++ 在Ubuntu 19.04、GCC 8.3.0中测试。
C++20
main.cpp
编译并运行:
输出:
因此,请注意这是如何返回调用者信息的,因此非常适合在日志中使用,另请参阅: Is there a way to get function name inside a C++ function? 建议: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1208r5.pdf 文件说:
其中NTBS表示“以空结尾的字节串”。
在GCC 11.3 Ubuntu 22.04上测试。它不在GCC 9.1.0中
|
![]() |
4
18
其中“函数名”是实现规范。这意味着,无论何时声明函数,编译器都会将此变量隐式添加到函数中。的情况也是如此
仍将使用以下方式编译代码
|
![]() |
5
12
对于那些想知道VS进展如何的人来说。 MSVC 2015更新1,cl.exe版本19.00.24215.1:
输出: from main(): main main int __cdecl main(void) from A::f(): A<int,float>::f f void __cdecl A<int,float>::f<bool>(void)
使用
|
![]() |
George S. · 是否存在基于元组的控制流语句内部表示? 7 年前 |
![]() |
FlatAssembler · 在x86程序集中计算exp(x) 7 年前 |
![]() |
cib · 即时编译和动态编译有什么区别? 7 年前 |
![]() |
Artemis · 寄存器与指令之间的差异 7 年前 |
![]() |
Sam · 了解go工具编译和链接命令 7 年前 |