[c++]globale variablen, wie?

mootsch

Grünschnabel
Hi,

ich habe da mal eine kleine Frage. Mein Programm besteht aus mehreren header und cpp dateien. Um mein Programm vernünftig zu betreiben, brauche ich globale variablen, die ich von überall aus ansprechen kann.

Ich war VB coder, da ging das ja ganz einfach -> neues modul -> public blabla, fertig.

Ich verstehe nur nicht wie ich das in c++ lösen kann das problem, da mir der compiler grundsätzlich rausgibt das die variable mehrfach definiert wird. Wie kann ich diese fehlermeldung unterdrücken?

Danke im voraus,
mootsch
 
Geht ganz einfach, wenn man's weiss!!

HeaderDatei1.h
int g_MeineGlobaleVariable;
.....

HeaderDatei2.h kann aber auch im cpp definiert sein!
extern int g_MeineGlobaleVariable;
.....

Mit extern machst Du die Variable bekannt, weist aber darauf hin, dass diese schon an einem anderen Ort deklariert wurde!
 
stimmt :)
ist wirklich nicht schwer, vielleicht aber noch etwas :

Die Header Datei wo
Code:
int g_MeineGlobaleVariable;
definiert ist, muss nur einmal includiert werden, oder?
Das war glaube ich auch der Grund warum ich als compiler fehler immer
Code:
multiple definition of `g_MeineGlobaleVariable'
goWindowClass.cpp: first defined here        <- oder halt die Datei wo er das erste mal diese Variable entdeckt
bekommen hab. Ist vielleicht nicht schlecht wenn man das auch noch mal niederschreibt, weil ich dachte auch, eine Header mit globalen variablen MUSS überall includiert werden wo ich sie benutzen will. Aber das stimmt ja nicht :) weil die Variablen sonst mehrfach neu deklariert werden, und das führt zu einem linker problem.

Mal wieder ein danke ein dich... plus eine bewertung von mir weil du irgendwie immer kurz nachdem ich eine frage gestellt hab, geantwortet hast ;).
danke!

mfg,
mootsch
 
Erst mal Danke für die Bewertung! Freut mich immer wieder! Da wird meine Arbeit auch geschätzt!!!

Nun noch ein kleiner Tipp, damit Du mit Mehrfach-Includes in Zukunft keine Probleme mehr hast!

Schreibe zu beginn Deiner Header-Datei folgende zwei Zeilen:
Code:
#ifndef __MEINHEADERSOLLNUREINMALINCLUDIERTWERDEN_H__
#define __MEINHEADERSOLLNUREINMALINCLUDIERTWERDEN_H__

Natürlich muss Du für jeden Header einen neuen Namen definieren! Am Besten nimmst Du den Dateinamen!!!

So damit es aber keine Fehler gibt muss Du am Ende der Header-Datei noch schreiben:

Code:
#endif

Damit ist gewährleistet, dass Dein Header nur einmal includiert wird, auch wenn Du diesen öfters einbindest!
 
Danke für den Tip, aber dazu mal ne frage :

auch wenn meine header dann mehrfach includiert werden kann, machts aber prinzipiell keinen unterschied ob ich die header nun einmal oder mehrfach includiere, oder? Weil mit der einmal includierung funzt das ganze ja auch, oder gibts da situationen wo sowas nützlich ist?
 

Neue Beiträge

Zurück