Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

18.04.2004, 00:21

ok, jetzt ist es klar. ich wusste nur nicht, wie ich die mit #define erstellten
SYMBOLE (richtig?) zwischen den VARIABLEN, KONSTANTEN und den TYPEN wie INT, BOOL, etc. einordnen soll. wenn das also dann einfach SYMBOLE sind (definition) dann ist alles klar. das sind also mehr oder weniger nur Platzhalter ohne bestimmte bedeutung, so ne art TYP oder VARIABLE ohne hintergrund und bedeutung (wie z.b. integer oder das es ein array sein soll) ?

das mit dem extern hab ich nun komplett verstanden.

ich bin eigentlich recht gespannt was mir noch so alles für "hilfmittel" über den weg laufen, die die sprache c++ ausmachen.

vielen dank nochmal !

Ralph

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

12

18.04.2004, 00:30

Zitat von »"thexray"«

das sind also mehr oder weniger nur Platzhalter ohne bestimmte bedeutung, so ne art TYP oder VARIABLE ohne hintergrund und bedeutung (wie z.b. integer oder das es ein array sein soll) ?


Diese Symbole werden vom Präprozessor, und nicht vom eigentlichen Compiler verarbeitet. Der Präprozessor ersetzt afaik (da die Abkürzung zur Zeit hier so gerne verwendet wird, muss ich das ja auch mal tun ;) ) nur das Symbol, das du mit #define definiert hast, durch den Text, als den du es definiert hast.
Wenn du also zwei verschiedene Werte in Debug und Release benutzt, kannst du sie einfach als solches Symbol definieren:

Du schreibst den Text:

Quellcode

1
2
3
4
5
6
7
#ifdef _DEBUG
#define MEIN_SYMBOL "debug-text"
#else
#define MEIN_SYMBOL "release-text"
#endif

char mein_string[] = MEIN_SYMBOL;


Der Präprozessor macht daraus im Debug-Modus:

Quellcode

1
char mein_string[] = "debug-text";


und im Release-Modus:

Quellcode

1
char mein_string[] = "release-text";


Dies funktioniert einzig auf Textbasis - der Präprozessor hat also von typen, variablen, konstanten etc. gar keine Ahnung, sondern ersetzt im Code nur definierte Symbole durch den ihnen zugewiesenen Text.

Der Compiler hingegen weiß gar nicht, was vor dem Durchlauf des Präprozessors im Code stand.
Mozilla Firefox
The Browser - reloaded

13

18.04.2004, 01:06

also dann müsste der präprozessor (ist das ne eigenständige .exe datei oder gehört der zum compiler ?) also folgende zeile

VAR HWND g_hWindow;

wenn _initwindow_cpp definiert wurde in

HWND g_hWindow;

umwandeln, und wenn _initwindow_cpp nicht definiert wurde, in

extern HWND g_hWindow;

umwandeln bzw. die variable g_hWindow nicht erneut als HWND definieren, weil sie schonmal definiert wurde, als was auch immer
(so versteht es dann der compiler und läßt diese zeile aus, weil extern
davor steht)

richtig ?

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

14

18.04.2004, 02:03

Genau :)

Also "auslassen" tut er die Zeile nich, sondern er behandelt sie eben anders, aber ich denk, das war jetzt nur eine Ausdrucksschwierigkeit ;D ;)
Mozilla Firefox
The Browser - reloaded

15

18.04.2004, 02:14

hmm.. ja, glaub auch.. :opa:

vielen dank für die ausführliche erklärung !! echt, vielen dank !

ich hab mal wieder was grundlegendes zu c++ verstanden
:biggrinangel:


ihr seid echt ein super "team" hier in david's forum.
wenn ich in zukunft ein wenig schlauer bin, kann ich ja auch
mal schauen, ob ich wem helfen kann hier.

wenn ihr fragen zu 3dstudio, softimage oder bildformaten (tv, etc..)
habt, da wär ich dann mehr oder weniger der fachmann. :)

also vielen dank nochmal und bis bald !

Ralph :wink:

16

18.04.2004, 09:35

:huhu:

Werbeanzeige