__FILE____LINE__是众所周知的.C99之后有一个__func__.

#include <iostream>
struct Foo {
        void Do(){ std::cout << __func__ << std::endl; }
};

int main()
{
        std::cout << __func__ << std::endl;
        Foo foo; foo.Do();
        return 0;
}

将输出

main
Do

是否有宏/关键字可以输出类似Foo::Do的方法名称?

推荐答案

Boost有一个名为BOOST_CURRENT_FUNCTION的特殊实用程序宏,它隐藏了编译器实现之间的差异.

在它的实现之后,我们看到有几个宏,具体取决于编译器:

  • GCC,MetroWerks,数字火星,国际商会,MinGW
  • __FUNCSIG__--MSVC
  • __FUNCTION__--英特尔和IBM
  • __FUNC__--波兰德
  • __func__--ANSI C99

C++相关问答推荐

Linux/C:复制修剪了最后一个填零孔的文件

数组元素的编号索引

有什么方法可以检测SunOS上的SparcWorks吗?

为什么下面的C代码会进入无限循环?

在C中使用强制转换将uint16_t转换为uint8_t [2]是否有效?

在struct中调用函数,但struct在void中 *

C:scanf(%d&q;,...)输入只有一个减号

为什么在函数内部分配内存空间时需要添加符号?

为什么GCC C23中的关键字FALSE不是整数常量表达式?

为什么我不能只在内存地址中添加一个int来寻址任何数组?

如何用c语言修改shadow文件hash部分(编程)?

在C中创建任意类型的只读指针参数

当内存来自Malloc时,将char*转换为另一个指针类型是否违反了严格的别名规则?

如何确保我将使用C标准库函数的函数版本,如&getc";,而不是类似函数的宏版本?

Realloc():中止的下一个大小无效(核心转储)

c程序,让用户输入两类数字,并给出输出用户输入多少个数字

当用C打印过多的';\n';时输出不正确

从文件到链表读取日期

当 n 是我们从用户那里获得的整数时,创建 n 个 struct 参数

如何使用 VLA 语法使用 const 指针声明函数