Seite 1 von 1

Preprozessor #ifdef #endif

Verfasst: 20. Januar 2012 09:19
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

Re: Preprozessor #ifdef #endif

Verfasst: 20. Januar 2012 11:38
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!

Re: Preprozessor #ifdef #endif

Verfasst: 20. Januar 2012 12:18
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

Re: Preprozessor #ifdef #endif

Verfasst: 20. Januar 2012 12:29
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.