You are not logged in.

  • Login

1

Thursday, December 23rd 2010, 1:44pm

#ifndef

Hallo!
Ich weiß nicht wofür #ifndef da ist. In meinem Buch tritt das irgendwann auf, wird aber nur so behandelt, dass man das da einfach hinschreiben solle..... :S
Könne mir jemand hier das erklären?
Und wieso wird meistens gleich ein Konstanter Wert erstellt?
Beispiel:

C/C++ Quellcode

1
2
3
4
5
6
#ifndef XYZZYX_HPP
#define XYZZYX_HPP
...
...
...
#endif

2

Thursday, December 23rd 2010, 1:49pm

#ifndef abc leitet eine bedingte Anweisung ein, die nur ausgeführt wird, wenn der Makro abc nicht existiert. Google ist bei solchen Fragen übrigens extrem nützlich für dich!

3

Thursday, December 23rd 2010, 2:06pm

Achso, also wenn das nicht existiert, wird das was zwischen #ifndef und #endif ist, ausgeführt.
Wodurch ein erneutes Ausführen dann mit der Konstanten vereitelt wird. Okay danke!

GOOGLE benutze ich immer bevor ich frage, aber wenn ich das nicht verstehe frag ich hier nochmal nach.

4

Thursday, December 23rd 2010, 3:41pm

Es handelt sich dabei um Compilerdirektiven. Das bedeutet, in deinem fertigen Programm taucht dfavon nichts auf, sondern es sind Anweisungen für den Compiler wie er den Code zu übersetzen hat. Oftmals wird so plattformabhängiger Code mit gemanaged.

5

Thursday, December 23rd 2010, 6:16pm

Meist bedeutet das:

C/C++ Quellcode

1
2
3
4
5
6
#ifndef XYZZYX_HPP  // -> wenn noch nicht definiert/eingebunden
#define XYZZYX_HPP // -> dann hiernach definieren/einbinden
...
...
...
#endif // -> Ende der Definition


Diese Sachen können durchaus umfangreicher und verschachtelt auftreten.
Wird zum Beispiel genutzt um doppelte Definitionen zu vermeiden.
Beispiel: Meist ist es wenig sinnvoll die gleiche Datei mehrmals in ein Projekt einzubinden. Bei grossen Projekten hat man aber nicht immer alle Infos was bereits eingebunden ist. In deinem Beispiel sollen die Headerdatei-Infos nur einmal eingebunden werden.

Das kann sich auf den Inhalt kompletter Dateien beziehen oder auch nur auf kleine Teile des Quelltextes.

Hoffe mal das ich nix vergessen und alle Klarheiten beseitigt habe :S

MfG bcc-fan

6

Thursday, December 23rd 2010, 10:44pm

Und es wird nicht solange wiederholt, solang wie das Makro nicht vorhanden ist?
Wird das Makro durch #ifndef mit erstellt?

7

Thursday, December 23rd 2010, 11:30pm

Ich habe deine Frage zwar nicht ganz verstanden, aber versuche dir trotzdem mal eine Antwort zu geben.
Mit ifndef prüfst du ja, ob die entsprechende Konstante schon vorhanden ist, wie ja bereits erwähnt wurde
Normalerweise sollte dann in der nächsten Zeile deines Programms etwas wie #define foo stehen, denn falls die Konstante noch nicht definiert ist, wirst du sie sicherlich definieren wollen.

8

Friday, December 24th 2010, 2:24pm

Erklärt sich ja von selbst... ;-)
Danke trotzdem!

Similar threads

Social bookmarks