Preprozessor #ifdef #endif

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
lespaul
Beiträge: 87
Registriert: 11. August 2011 10:07

Preprozessor #ifdef #endif

Beitrag von lespaul »

Hallo Leute,

ich möchte ggf. eine kleine Logdatei anlegen. Je nachdem ob LOGEDGES defined ist oder nicht.. Allerdings springt das Programm jedesmal in die if Verzweigung???

Code: Alles auswählen

//#define LOGEDGES

#ifdef LOGEDGES
	QFile *file;
	QString name = QString("edges.txt");
	file = new QFile(name);
	if ( !file->open(QIODevice::WriteOnly | QIODevice::Text) ) return false;
	QTextStream out(file);
#endif
Benutze ich die Preprozessor direktiven falsch?

Grus Lespaul
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Preprozessor #ifdef #endif

Beitrag von franzf »

Was meinst du mit if-Verzweigung? Das #ifdef oder das if(!file->open())?
Wo steht der Codeschnipsel? In einer .cpp oder .h? Das mit den defines ist immer so ne Sache. Wenn ein anderer Header das setzt und du den einbindest hast du natürlich auch hier das gesetzt.
Was auch sein kann, dass LOGEDGES ein doofer Name ist, und in einer anderen, eingebundenen Lib zur Anwendung kommt (und entsprechend bei dir Probleme bereitet).

Im übrigen würde ich Logging als optional ansehen. Wenn du das LogFile nicht öffnen kannst und gleich die ganze Funktion abbrichst (return false), kann das böse enden... Das Logging sollte den normalen Funktionsfluss nicht beeinträchtigen!
lespaul
Beiträge: 87
Registriert: 11. August 2011 10:07

Re: Preprozessor #ifdef #endif

Beitrag von lespaul »

franzf hat geschrieben:Was meinst du mit if-Verzweigung? Das #ifdef oder das if(!file->open())?
die erste #ifdef
franzf hat geschrieben:Wo steht der Codeschnipsel? In einer .cpp oder .h?
In einer CPP
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Preprozessor #ifdef #endif

Beitrag von franzf »

lespaul hat geschrieben:
franzf hat geschrieben:Was meinst du mit if-Verzweigung? Das #ifdef oder das if(!file->open())?
die erste #ifdef
Gut, da habe ich ja auch schon was geschrieben. Suche in engebundenen Headern, ob dort LOGEDGES definiert ist. Fall nicht, kannst du mal ein make clean versuchen.
Antworten