Variable von anderer C Datei Verfügbar machen

Gast #3531078
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
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;

}
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
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
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.