JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

?Frage? (#ifndef)

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
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

BeitragVerfasst am: 20.02.2007, 17:27    Titel: ?Frage? (#ifndef) Antworten mit Zitat

hoi,
Was hat es eigendlich mit
#ifndef
#endif
aufsich?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 20.02.2007, 17:46    Titel: Antworten mit Zitat

(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
CPP:
#pragma once

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 20.02.2007, 17:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Xibus
Junior JLI'ler


Alter: 33
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 20.02.2007, 17:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
51m0n
JLI'ler


Alter: 33
Anmeldedatum: 06.01.2006
Beiträge: 167
Wohnort: Erkelenz
Medaillen: Keine

BeitragVerfasst am: 20.02.2007, 17:56    Titel: Antworten mit Zitat

Hi,
das sind sogenannte Präprozessor Befehle.
wenn du zb. irgendwo
CPP:
#define xyz 180

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 Wink

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
Benutzer-Profile anzeigen Private Nachricht senden
manu
Super JLI'ler


Alter: 35
Anmeldedatum: 09.03.2006
Beiträge: 327
Wohnort: allgäu (DE)
Medaillen: Keine

BeitragVerfasst am: 20.02.2007, 17:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 20.02.2007, 17:58    Titel: Antworten mit Zitat

Jep, sorry, hab das durcheinander Gebracht, udn Makros statt Präprozessorbefehel gesagt.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
foreach
ehem. hanse



Anmeldedatum: 08.05.2004
Beiträge: 183

Medaillen: Keine

BeitragVerfasst am: 20.02.2007, 18:30    Titel: Antworten mit Zitat

CPP:
#ifdef
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
CPP:
#pragma
werden von den meisten Compilern unterstütz und können ohne Probleme verwendet werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 21.03.2007, 18:29    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
David
Super JLI'ler


Alter: 40
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 21.03.2007, 18:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 21.03.2007, 18:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 21.03.2007, 18:58    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
naja:
CPP:
#define UNICDE //unicode an
#undef UNICODE //unicode aus


Da fehlt ein O. Rolling Eyes
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 21.03.2007, 19:03    Titel: Antworten mit Zitat

schon verbessert
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum