c++gccvisual-c++

Visual C++ equivalent of __FILE__ , __LINE__ and __PRETTY_FUNCTION__


GCC compiler gives me the following macros:

Does Visual C++ have the equivalent of these macros? A side question is, are these standard for C++ compilers?


Solution

  • In VS2008, this:

    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);
    }
    

    will print this:

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

    (The line number is "wrong" since there was really some extra stuff at the top of my file.)