Problem bei globaler Variable in C

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/problem_bei_globaler_variable_in_c_122610/page_1 - zur Vollversion wechseln!


mr.q.c schrieb am 22.08.2004 um 17:17

Hi Leute!

Ich habe ein Problem. Vereinfacht ausgedrückt:
Ich möchte folgendes Programm kompilieren (h1 bzw c1 ist das Hauptprogramm
und greift auf eine Funktion in h2 bzw c2 zu)

h1.1:
#ifndef h1
#define h1

#include "h2.h"

int i;

#endif

===========
c1.cpp:
#include "h1.h"

int main()
{
i = 1;
return foo();
}

===========
h2.h:
#ifndef h2
#define h2

#include "h1.h"

int foo();

#endif

===========
c2.cpp
#include "h2.h"

int foo()
{
return i;
}

... WO LIEGT DA DAS PROBLEM?
Den Linker hauts immer auf.


mat schrieb am 22.08.2004 um 18:23

habs mir nicht so genau angeschaut.. allerdings eines kann ich dir sagen: so, und am besten gar nicht, hantiert man nicht mit globalen variablen.

btw. das problem liegt sicher an den include guards.


Ringding schrieb am 22.08.2004 um 18:29

Du musst die Variable extern deklarieren. Diese Frage stellt beinahe jeder C Anfänger, man könnte also sagen, es ist eine FAQ.


Geigerzeiger schrieb am 22.08.2004 um 18:55

ok ich würds so machen:

Code:
h1.h:

#ifndef h1
#define h1

extern int i;   // Verweis auf i in c1.cpp

#endif

===========
c1.cpp:
#include "h1.h"    // Variable
#include "h2.h"    // Funktion

int i;         // Setz ich, da h1.h auf diese verweist

int main()
{
    i = 1;
    return foo();
}

===========
h2.h:
#ifndef h2
#define h2

extern int foo();    // in c2.cpp vorhanden

#endif

===========
c2.cpp
#include "h1.h"      // Dekl. für Variable
#include "h2.h"      // Dekl. für Funktion

int foo()
{
    return i;
}
^

/edit:
Es würde auch eine header reichen wo du die 2 verweise reintust.


mr.q.c schrieb am 23.08.2004 um 21:01

Danke für die Antworten!

Zu meiner verteidigung und meiner schande muss ich gestehen, dass ich auf kein anfänger in C bin. Nur habe ich seit 4 Jahren keine Zeile C mehr programmiert. Hab mich aber jetzt in ein neues Thema in der Programmierung eingearbeitet und dazu eignet sich C am besten.


HaBa schrieb am 23.08.2004 um 23:56

"Pro globaler Variable eine Watschn" als Aussage meines damaligen EDV-Professors hat sich bei mir GSD tief genug eingebrannt :D


moidaschl schrieb am 24.08.2004 um 08:04

Zitat von HaBa
"Pro globaler Variable eine Watschn" als Aussage meines damaligen EDV-Professors hat sich bei mir GSD tief genug eingebrannt :D

rofl :D

dann müssten wir unsren lehrern schon ein paar verpasst haben, manchmal gehts hald leider ned ohne, bzw is es vieeeeeel angenehmer :D


xdfk schrieb am 24.08.2004 um 08:10

Zitat von moidaschl
rofl :D

dann müssten wir unsren lehrern schon ein paar verpasst haben, manchmal gehts hald leider ned ohne, bzw is es vieeeeeel angenehmer :D

das geht net ohne kann man net gelten lassen. die wenigen spezialfaelle in denen du wirklich globale variablen brauchst hast du noch net kennengelernt ;)

btw: wenn du C programmierst wieso nennst du die files .cpp? ;)


Geigerzeiger schrieb am 24.08.2004 um 18:09

im prinzip sollte man src files mit .c versehen wenn die standard ANSI-C library verwendet wird und keine zeile c++ vorhanden ist.

Aber imho is ma des zimli wurscht ! :D

btw. man sollte alle vars/objekte mit watches versehen und in den entsprechenden zeilen breakpoints setzen.


mr.q.c schrieb am 24.08.2004 um 23:29

Zu der frage warum cpp-ext und nicht c!

Das einarbeitungsprojekt das ich gerade angefangen habe wird mit C angefangen, brauche dann im weiteren verlauf C++ d.h. OOP und wird daher von anfang an mit einem c++-comp übersetzt. wegen der einheitlichen form ".cpp"




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026