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

1

17.10.2003, 20:53

externe variablen

hi

folgender (oder ähnlicher) code findet sich in den header dateien der ersten programmbeispiele :

Quellcode

1
2
3
4
5
6
7
8
9
#ifdef INITDIRECT3D_CPP
#undef VAR
#define VAR
#else
#undef VAR
#define VAR extern
#endif

VAR PDIRECT3D9 g_pD3D;


demnach wird (in diesem beispiel) die variable g_pD3D als externe variable deklariert, wenn nicht zuvor Initdirect3D.cpp compiliert wurde, da sich in der InitDirect3D.cpp folgendes findet :

Quellcode

1
#define INITDIRECT3D_CPP


die deklaration als "extern" ist mir nur gelüfig wenn eine variable zB in datei1.cpp definiert wird und dann in datei2.cpp als extern deklariert wird um sie in datei2.cpp ansprechen zu können.
warum wird es also in diesem fall benutzt ?

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

2

17.10.2003, 21:23

Wenn der Compiler die "INITDIRECT3D.H" kompiliert, fällt das "extern" weg, d. h. für "INITDIRECT3D.CPP" ist "g_pD3D" eine ganz normale Variable.

Für alle anderen "cpp"-Dateien ist "g_pD3D" eine externe Variable, das muss so sein, denn eine Variable darf ja nicht doppelt deklariert werden.

Zitat


die deklaration als "extern" ist mir nur gelüfig wenn eine variable zB in datei1.cpp definiert wird und dann in datei2.cpp als extern deklariert wird um sie in datei2.cpp ansprechen zu können.


Das ist hier ja genau der Fall! "g_pD3D" ist in "INITDIRECT3D.CPP" als Variable deklariert und damit sie auch in anderen "cpp"-Dateien angesprochen werden kann, wird sie für andere Dateien als "extern" deklariert.

Man kann es auch anders machen, denn eine bereits deklarierte Variable darf in derselben Datei auch zusätzliches mal, diesmal als "extern" deklariert werden, z.B.:

CPP1.cpp:

Quellcode

1
2
#include "HEADER.h"
int GlobalVar = 0;

CPP2.cpp:

Quellcode

1
2
3
4
5
#include "HEADER.h"
void func ()
{
GlobalVar = 5;
}

Header.h:

Quellcode

1
extern int GlobalVar;

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

17.10.2003, 21:23

Re: externe variablen

Zitat von »"r0x0r"«

die deklaration als "extern" ist mir nur gelüfig wenn eine variable zB in datei1.cpp definiert wird und dann in datei2.cpp als extern deklariert wird um sie in datei2.cpp ansprechen zu können.

Jo, genau das ist ja hier auch der Fall. Die Beispielprogramme wollen ja auf diese Variablen zugreifen.

4

17.10.2003, 22:21

ah
gar nicht SO unsinnig was ihr da sagt !! ;D
sehr clever..

vielen dank !! :huhu:

Werbeanzeige