这里记录下几个编译器预定义宏,得到函数名和函数签名(对于类方法或者模板函数,得到的是完整的签名)。
严格来说它们并不是宏,而是编译器提供的Magic Identifier,它们扩展出来的形式如下:
1 | static const char __func__[] = "function-name "; |
函数名
__func__
:C99/C++99标准提供,早期Microsoft C++ Compiler不支持__FUNCTION__
兼容GUNC以及Microsoft C++ Compiler的写法:
1 |
函数签名
__PRETTY__FUNCTION__
:这不是标准提供的,是gcc的扩展,Microsoft C++ Compiler不支持__FUNCSIG__
:在Microsoft C++ Compiler中,使用这个
兼容GUNC以及Microsoft C++ Compiler的写法:
1 |