web-dev-qa-db-fra.com

Le moyen le plus simple d'écrire un message de sortie dans une «fenêtre de sortie» dans Visual Studio 2010?

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.

18
understack

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

24
peter_mcc

À des fins de débogage, vous pouvez utiliser _RPT macros .

Par exemple,

_RPT1( 0, "%d\n", my_int_value );
11

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 );
9
Inverse

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é.

4
Jangles

Utilisation:

OutputDebugStringA("Some random text");

Ou:

OutputDebugString("Some random text");
2
Kingeh

Pour utiliser OutputDebugString (), fournissez char * ou const char * comme paramètre:

OutputDebugString("This is an output");
0
Donotalo