Printing output on the Output Window in Visual C++ IDE

前端 未结 5 1648
生来不讨喜
生来不讨喜 2021-01-06 12:38

How do I print on the output window in Visual C++? The project that I am working on isn\'t of a console window project type. That\'s when I build and run it, it doesn\'t ope

相关标签:
5条回答
  • 2021-01-06 12:48

    Instead of printing to the Output window in VS as indicated by other answers, I prefer to create a console window in my GUI apps, then use regular printf or cout to write debugging info to it. This has the benefit that you can do it even when you run without the debugger.

    See this site for a simple function that sets up a console.

    0 讨论(0)
  • 2021-01-06 12:49

    You can use the Windows function OutputDebugString (see here) to send output to debuggers. These outputs are shown in the VS output window. You can also watch these outputs with external applications, e.g. DebugView.

    Remember to remove these statements from your production code if you don't want other people to see these debug messages (which would otherwise be possible using tools like DebugView...)

    0 讨论(0)
  • 2021-01-06 12:55

    You can use OutputDebugString("..."); to print to the Output window of Visual Studio. You have to #include <windows.h> though.

    0 讨论(0)
  • 2021-01-06 12:55

    I have written a portable TRACE macro.
    On MS-Windows, it is based on OutputDebugString as indicated by other answers.

    Here I share my work:

    #ifdef ENABLE_TRACE
    #  ifdef _MSC_VER
    #    include <windows.h>
    #    include <sstream>
    #    define TRACE(x)                           \
         do {  std::stringstream s;  s << (x);     \
               OutputDebugString(s.str().c_str()); \
            } while(0)
    #  else
    #    include <iostream>
    #    define TRACE(x)  std::clog << (x)
    #  endif        // or std::cerr << (x) << std::flush
    #else
    #  define TRACE(x)
    #endif
    

    example:

    #define ENABLE_TRACE  //can depend on _DEBUG or NDEBUG macros
    #include "my_above_trace_header.h"
    
    int main (void)
    {
       int     v1 = 123;
       double  v2 = 456.789;
       TRACE ("main() v1="<< v1 <<" v2="<< v2 <<'\n');
    }
    

    Please feel free to give any improvements/suggestions/contributions ;-)

    0 讨论(0)
  • 2021-01-06 13:02

    I have used this in the past, although not with a win32 application. You could give it a shot though :)

    http://www.cplusplus.com/forum/lounge/17371/

    0 讨论(0)
提交回复
热议问题