Problem mit vsprintf

mschlegel

Erfahrenes Mitglied
Hi

Folgender Code stammt aus einem Buch, schmeist aber einen Compilerfehler (Error 3 error C2664: 'vsprintf' : cannot convert parameter 1 from 'TCHAR [1024]' to 'char *').
C:
void CLogfile::fTextout(const char *Text, ...){
	TCHAR buffer[MAX_BUFFER];	//char-Buffer
	va_list pArgList;			// Liste mit übergebenen Argumenten

	// String aus den Argumenten erstellen
	va_start (pArgList, Text);
	vsprintf (buffer, Text, pArgList);
	va_end (pArgList);

	// Erzeugten String schreiben
	Textout (buffer);
}

Ich hab eine Referenzbeschreibung dieser vsprint-Funktion gefunden und da wird statt eines TCHAR ein char verwendet. Das funktioniert dann auch, aber kann mir jemand erklären wieso der TCHAR nicht funktioniert (der Autor muss sich doch was dabei gedacht haben)?

Danke
 
TCHAR wird in der Regel auf wchar_t abgebildet, stellt also gar keinen char dar. Dann kann der Code auch nicht kompiliert werden. Solltest du hingegen dein Programm für ANSI kompilieren, sollte TCHAR auf char abgebildet werden und alles funktioniert.

Allgemein empfehle ich dir, in solchen Fällen einfach mal einen Blick in die zugehörigen Quellen zu werfen. Da steht die Antwort schließlich drin. Guck dir also an, wie TCHAR definiert ist.

-Gawayn
 
ANSI klingt gut, aber wie mache ich das?

Ich komm halt aus der Java-Welt und dieses ganze Präprozessor-KomischeBegriffe-Irgendwas-Gedönse is im Moment noch etwas viel für mich :) Das Buch geht darauf auch noch nicht weiter ein.
 
Ob du für Unicode oder ANSI kompilieren willst, stellst du normalerweise in den Compileroptionen ein, je nachdem, was du verwendest.
 
Zurück