Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Xibus Junior JLI'ler
Alter: 33 Anmeldedatum: 18.02.2007 Beiträge: 91 Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:27 Titel: ?Frage? (#ifndef) |
|
|
hoi,
Was hat es eigendlich mit
#ifndef
#endif
aufsich? |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:46 Titel: |
|
|
(Dein Titel war ja sehr aussagekräftig, hab den mal ein wenig editiert)
Das sind sogenannte Includeguards damit der COmpiler keine Fehler spukt, wenn man eine Datei mehrmals einbindet.
Im Prinzip reicht es, wenn man weiß, das jede Datei in einem
CPP: | #ifndef X
#define X
//hier der Code
#endif
|
Block sthen muss, damits die Fehler nicht gibt. Alternativ reicht auch ein
als erste Zeile, aber IMHO ist das kiene C++ Standard, sondern nur bei Microsoft so.
Wenn du mehr wissen willst, kannst du dich ja mal über Makros schlau machen, das sind nämlich all die Dinger, die mit '#' anfangen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
manu Super JLI'ler

Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:47 Titel: |
|
|
es handelt sich dabei um einen Include Guard. Man verwendet diese konstruktion in headern, die häufig im projekt genutzt und auch mehrfach includiert werden um Linkerfehler vorzubeugen bzw. sie zu beseitigen.
bei Visualstudio geht auch #pragma once
edit: oO zuspät |
|
Nach oben |
|
 |
Xibus Junior JLI'ler
Alter: 33 Anmeldedatum: 18.02.2007 Beiträge: 91 Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:53 Titel: |
|
|
kk thx,
aber wenn die so nützlich sind warum werden die dann nit im jli buch erklärt?! naja egal jetzt weis ichs ja |
|
Nach oben |
|
 |
51m0n JLI'ler

Alter: 33 Anmeldedatum: 06.01.2006 Beiträge: 167 Wohnort: Erkelenz Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:56 Titel: |
|
|
Hi,
das sind sogenannte Präprozessor Befehle.
wenn du zb. irgendwo
schreibst, wird bevor der code kompiliert wird überall im quellcode xyz durch 180 ersetzt.
Mit #ifdef kannst du herausfinden kannst du herausfinden ob schon etwas mit diesem namen definiert wurde.
Bsp.
CPP: | #ifdef _UNICODE
#define HALLO L"Hallo"
#else
#define HALLO "Hallo"
#endif |
Jetzt wird erst geprüft ob _UNICODE definiert wurde.(das macht der compiler) Wenn das der Fall ist, wird HALLO als L"Hallo" andernfalls als "Hallo" definiert.
Dies findet man häufig bei Include Guards wieder.
Du kannst so auch auch makros definieren, die eigentlich schon funktionen sind.
CPP: | #define SchreibeText(t) (std::cout << t) |
Wenn du jetzt 'SchreibeText("hallo");' schreibst, wird dies durch 'std::cout << "hallo";' ersetzt. Hier ist das nicht besonders sinnvoll aber es geht ums prinzip
Hier noch ein link:
http://de.wikipedia.org/wiki/Pr%C3%A4prozessor
MfG 51m0n
edit: Mann sollte net auf antworten klicken, sich dann was zu essen holen und dann erst mit schreiben anfangen :/. _________________ Teigwaren
heißen Teigwaren,
weil sie früher einmal Teig waren
Zuletzt bearbeitet von 51m0n am 20.02.2007, 17:58, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
manu Super JLI'ler

Alter: 35 Anmeldedatum: 09.03.2006 Beiträge: 327 Wohnort: allgäu (DE) Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:57 Titel: |
|
|
Xibus hat Folgendes geschrieben: | kk thx,
aber wenn die so nützlich sind warum werden die dann nit im jli buch erklärt?! naja egal jetzt weis ichs ja |
Naja man könnte viele Dinge finden, die schon nützlich wären, aber in dem Buch nicht erklärt werden. genauso kann man das bei jedem Buch machen.
Ich denke das Buch beschränkt sich halt sehr aufs wesentliche was gerade auch für Anfänger wichtig bei einem Buch ist und da solche Sachen wie include Guards oder andere #ifndef abfragen für die beispiele eh nicht benötigt werden wirds halt nicht behandelt.
Zuletzt bearbeitet von manu am 20.02.2007, 17:59, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 20.02.2007, 17:58 Titel: |
|
|
Jep, sorry, hab das durcheinander Gebracht, udn Makros statt Präprozessorbefehel gesagt. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
foreach ehem. hanse
Anmeldedatum: 08.05.2004 Beiträge: 183
Medaillen: Keine
|
Verfasst am: 20.02.2007, 18:30 Titel: |
|
|
etc. werden auch gerne dazu verwendet Portablen Code zu schreiben z.B.:
CPP: | #ifdef WIN32
//Windows spez. Code
#else
//Für alle anderen OSes
#endif
|
Die werden von den meisten Compilern unterstütz und können ohne Probleme verwendet werden. |
|
Nach oben |
|
 |
Otscho Super JLI'ler

Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 21.03.2007, 18:29 Titel: |
|
|
51m0n hat Folgendes geschrieben: |
Jetzt wird erst geprüft ob _UNICODE definiert wurde.(das macht der compiler) Wenn das der Fall ist, wird HALLO als L"Hallo" andernfalls als "Hallo" definiert. |
Gibt es nicht auch ein Makro, das den Compiler auf Unicode einstellt ? |
|
Nach oben |
|
 |
David Super JLI'ler
Alter: 40 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 21.03.2007, 18:47 Titel: |
|
|
Otscho hat Folgendes geschrieben: | 51m0n hat Folgendes geschrieben: |
Jetzt wird erst geprüft ob _UNICODE definiert wurde.(das macht der compiler) Wenn das der Fall ist, wird HALLO als L"Hallo" andernfalls als "Hallo" definiert. |
Gibt es nicht auch ein Makro, das den Compiler auf Unicode einstellt ? |
Das machst du normal über die Projekteinstellungen oder sonstwo. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 21.03.2007, 18:53 Titel: |
|
|
naja:
CPP: | #define UNICODE //unicode an
#undef UNICODE //unicode aus
|
_________________ https://jonathank.de/games/
Zuletzt bearbeitet von Jonathan_Klein am 21.03.2007, 19:03, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
magynhard Super JLI'ler

Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 21.03.2007, 18:58 Titel: |
|
|
Jonathan_Klein hat Folgendes geschrieben: | naja:
CPP: | #define UNICDE //unicode an
#undef UNICODE //unicode aus
|
|
Da fehlt ein O.  _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
 |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
 |
|