Variable von anderer C Datei Verfügbar machen

Gast #3531078
Lesenswert?
• ▲
▼
Hallo,

Ich schreibe ein C-Programm (nicht c++) und hab eine Variable  int TEST 
= 0;

die befülle ich in meiner main() in der datei main.c mit dem wert 4711

TEST = 4711;

jetzt hab ich in einer anderen C-Datei test.c eine Funktion Add() und 
will dort auf die Variable zugreifen.
Wie kann ich das machen?

der Compile schmeist mir einen Fehler raus (multiply defined) wenn ich 
in der header datei von der main.c die variable rein schreibe.

Grußß
Klaus
Gast #3531098
Lesenswert?
• ▲
▼
ahh habs

in der main.h

volatile extern int myint; //global


und in der main c dann

volatile int myint = 0;  //initialisieren


und  inder xyz.c dann benutzen

volatile int myint;

funktion(){

myint +1;

}
#3531114
Lesenswert?
• ▲
▼
AnfängerLPC schrieb:

> und  inder xyz.c dann benutzen
>
> volatile int myint;
>
> funktion(){
>
> myint +1;
>
> }

Nein.
In der xyz.c dann benutzen
1
#include "main.h"
2

3
void funktion() {
4
  myint + 1;
5
}

Dazu hast du das h-File, damit sicher gestellt ist, dass alle extern 
Deklarationen quer durch das komplette Programm über alle Files 
identisch sind.
(und in main.c wird es ebenfalls inkludiert)
1
#include "main.h"
2

3
volatile int myint = 0; //initialisieren
4
...
Gast #3531140
Lesenswert?
• ▲
▼
Da das mit der globalen Variable ja nun geklärt scheint, liest du bitte 
als nächstes das Kapitel zu Funktionsparametern und -Rückgabewerten in 
deinem C-Buch. Denn globale Variablen nur sind Notbehelfe für 
Sonderfälle. Wann immer möglich, sollte man darauf verzichten.

Eine Funktion in der Art von
1
 int Add(int wert1, int wert2);
 z.B. wäre eine suabere Lösung.

Oliver
Gast #3531393
Lesenswert?
• ▲
▼
Olli,
ich hab einen DatenBuffer welcher gefüllt ist mit daten.
aus verschiedenen Funktionen muss ich auf die Daten dort drin zugreifen 
können.

Das geht leider nicht anders.

Das Volatile brauch ich nicht?

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.