views:

105

answers:

5

I've tried OutputDebugString function and most of the time I get error like :

error C2664: 'OutputDebugStringA' : cannot convert parameter 1 from 'int' to 'LPCSTR'

Please suggest. Thanks.

A: 

To use OutputDebugString(), provide char * or const char * as parameter:

OutputDebugString("This is an output");
Donotalo
A: 

What about printf?

printf("Some message");
int myNumber = 5
printf("My number = %d", myNumber);
Jon Cage
Printf does not print to the debugging window.
Billy ONeal
Good point; I'm obviously too used to writing console apps ;-)
Jon Cage
+7  A: 

It only accepts a string as a parameter, not an integer. Try something like

sprintf(msgbuf, "My variable is %d\n", integerVariable);
OutputDebugString(msgbuf);

For more info take a look at http://www.unixwiz.net/techtips/outputdebugstring.html

peter_mcc
Consider using sprintf_s
Jon Cage
@peter_mcc + @Jon: Even better yet, consider using std::stringstream.
Billy ONeal
@Billy ONeal: I used std::stringstream instead of sprintf/sprintf_s as you suggested. Thanks.
understack
+1  A: 

For debugging purposes you could use _RPT macros.

For instance,

_RPT1( 0, "%d\n", my_int_value );
Kirill V. Lyadvinsky
+1  A: 

The most common way I'm aware of is the TRACE macro:

http://msdn.microsoft.com/en-us/library/4wyz8787%28VS.80%29.aspx

For example:

int x = 1;
int y = 16;
float z = 32.0;
TRACE( "This is a TRACE statement\n" );

TRACE( "The value of x is %d\n", x );

TRACE( "x = %d and y = %d\n", x, y );

TRACE( "x = %d and y = %x and z = %f\n", x, y, z );
Inverse
@Inverse: It seems TRACE is defined in MFC, which I'm not using.
understack