J'ai essayé la fonction OutputDebugString
et la plupart du temps j'obtiens des erreurs comme:
error C2664: 'OutputDebugStringA' : cannot convert parameter 1 from 'int' to 'LPCSTR'
Veuillez suggérer. Merci.
Il n'accepte qu'une chaîne comme paramètre, pas un entier. Essayez quelque chose comme
sprintf(msgbuf, "My variable is %d\n", integerVariable);
OutputDebugString(msgbuf);
Pour plus d'informations, jetez un œil à http://www.unixwiz.net/techtips/outputdebugstring.html
À des fins de débogage, vous pouvez utiliser _RPT
macros .
Par exemple,
_RPT1( 0, "%d\n", my_int_value );
La méthode la plus courante que je connaisse est la macro TRACE
:
http://msdn.Microsoft.com/en-us/library/4wyz8787%28VS.80%29.aspx
Par exemple:
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 );
J'ai trouvé cette réponse lors de la recherche du message d'erreur: https://stackoverflow.com/a/29800589
Fondamentalement, il vous suffit de mettre un "L" devant votre chaîne de sortie lorsque vous utilisez OutputDebugString
:
OutputDebugString(L"test\n");
Cela a très bien fonctionné pour moi.
Éditer:
Pour formater les chaînes avec des données, j'ai fini par utiliser
char buffer[100]; sprintf_s(buffer, "check it out: %s\n", "I can inject things"); OutputDebugStringA(buffer);
Je ne suis en aucun cas un expert, je viens de trouver quelque chose qui a fonctionné et qui a évolué.
Utilisation:
OutputDebugStringA("Some random text");
Ou:
OutputDebugString("Some random text");
Pour utiliser OutputDebugString (), fournissez char *
ou const char *
comme paramètre:
OutputDebugString("This is an output");