include von header dateien

Gast #672145
Lesenswert?
• ▲
▼
Hallo,
ich hab folgendes Problem:

ich habe folgende Dateien die ich zusammen linken möchte.
1
//1.main.c
2
//Aufruf:
3
int x;
4
funktion(x,var_y);
5

6
//2.meineFunktionen.c
7
void funktion(int i,int j)
8
{
9
z=i+j+var_y;
10
}
11

12
//3.meineFunktionen.h
13
#ifndef  meineFunktionen_h
14
#define meineFunktionen_h
15

16
#define var_y 100
17
//global var
18
int z;
19
//protos
20
void funktion(int i,int j);
21
#endif

Um die Funktion in der main nutzen zu können muss ich diese mit extern 
neu definieren incl der variablen.
die mit #define angegebenen Konstanten muss ich in der main auch neu 
bekanntmachen.

Gibt es eine möglichkeit dies zu umgehen?
Ich möchte etwas modular programmieren aber auf globale variablen nicht 
verzichten.
Gast #672186
Lesenswert?
• ▲
▼
Seufz,
geht aber bei mir irgendwie nicht.
ich habe die .h datei dann in
meineFunktionen.c und in der main.c inkludiert, da ich die Variablen in 
beiden Dateien benötige.
Da meckert der linker über multiple definitionen.
Gast #672203
Lesenswert?
• ▲
▼
Üblicherweise enthalten Header-Files ausschließlich Deklarationen und
Makrodefinitionen, aber weder Variablen- noch Funktionsdefinitionen.
Diese stehen in den c-Files.
1
int z;
Ist eine Variablendefinition, gehört also in eine c-Datei, am besten
in eine, wo sie logisch gut hineinpasst, bei dir also bspw.
meineFunktionen.c. Damit andere Programmmodule auf z zugreifen können,
steht im Header-File meineFunktionen.h eine extern-Deklaration:
1
extern int z;

meineFunktionen.h wird in meineFunktionen.c und in allen anderen
c-Files, die z oder funktion benutzen, includet.

Dann hast du keine Konflikte und maximale Typsicherheit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren