c++ - __FILE__ 、 __LINE__ 和 __PRETTY_FUNCTION__ 的 Visual C++ 等效项

标签 c++ visual-c++ gcc compiler-construction

GCC 编译器为我提供了以下宏:

  • __FILE__ 这样我就可以打印出文件名+目录了。
  • __LINE__ 这样我就可以打印出我正在打印的行号。
  • __PRETTY_FUNCTION__ 这样我就可以打印出漂亮的函数名了

Visual C++ 是否有这些宏的等价物?附带的问题是,这些是 C++ 编译器的标准吗?

最佳答案

在 VS2008 中,这个:

struct A
{
    bool Test(int iDummyArg)
    {
        const char *szFile = __FILE__;
        int iLine = __LINE__;
        const char *szFunc = __FUNCTION__; // Func name
        const char *szFunD = __FUNCDNAME__; // Decorated
        const char *szFunS = __FUNCSIG__; // Signature

        printf("%s\n", szFile);
        printf("%d\n", iLine);
        printf("%s\n", szFunc);
        printf("%s\n", szFunD);
        printf("%s\n", szFunS);

        return true;
    }
};

int wmain(int argc, TCHAR *lpszArgv[])
{
    A a;
    a.Test(10);
}

将打印这个:

c:\source\test_projects\blah\blah.cpp
14
A::Test
?Test@A@@QAE_NH@Z
bool __thiscall A::Test(int)

(行号是“错误的”,因为我的文件顶部确实有一些额外的东西。)

关于c++ - __FILE__ 、 __LINE__ 和 __PRETTY_FUNCTION__ 的 Visual C++ 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4434282/

相关文章:

c++ - 如何在一个函数中拥有所有选项?

c++ - 在 VC++ 中将常量 char 分配给结构内部的字符数组

.net - VS 10.0 运行时是 .Net Framework 4 的一部分吗?

c++ - Codelite 调试器错误 : Failed to locate gdb! 在 '/usr/bin/gdb'

c - 海湾合作委员会错误 “No such file or directory”

c++ - 为 Windows 内置拼写检查提供程序添加拼写检查语言

c++ - 需要指向 apply_visitor() 返回值的示例的指针

c++ - 模板函数返回模板函数指针

c++ - 防止 C++ 库链接过期

gcc - 如何应用 GCC 补丁