Forum: Mikrocontroller und Digitale Elektronik Wie Variable deklarieren?


von Sascha (Gast)


Lesenswert?

Moin!

Zur Zeit habe ich eine Problem, mit einer Variablendeklaration. ich 
denke ihr könnt mir schneller hlefen, als das ich mich jetzt meine 
C-Bücher hole.
Ich habe 2 Programme: Main und Futter
In dem einen "main" wird eine Variable "x" erzeug, diesen Inhalt möchte 
ich gerne an ein weiteres Hauptprogramm  "futter" übergeben. Allerdings 
wird nie der korrekte Inhahlt der Varibale x  angezeigt.
Wie und wo muss ich die Varible richtig deklarieren ?
Es gibt extern  static  etc..

Bitte um kurzfrstige Antworten, Danke im Vorraus!!
Mfg Sascha

von andreas kasper (Gast)


Lesenswert?

hast du wirklich 2 programme oder zwei source files die zu einem 
programm werden?

wenn du eben 2 dateien hast dann musst es so machen:
datei1: globale variable: int wert;
datei2: global: extern int wert;
so weit ich mich erinnern kann wars das.

wenn du wirklich 2 programme hast dann wirds schon etwas schwieriger. da 
musst du dann über pipes oder shared memory oder ähnliches 
kommunizieren.

lg
andi

von Sascha (Gast)


Lesenswert?

Sorry, zwei Source Files...!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Im Prinzip hat Andreas zwar recht, aber sauberer ist folgende 
Vorgehensweise:


// Datei1.h (Deklaration der globalen Variablen)
1
extern int wert;

// Datei1.c (Definition der globalen Variablen)
1
#include "Datei1.h"
2
3
int wert;

// Datei2.c (Verwendung der globalen Variablen)
1
#include "Datei1.h"
2
3
int funktion(void)
4
{
5
  wert = 0;
6
7
  return (wert);
8
}

von Karl heinz B. (kbucheg)


Lesenswert?

Wenn du allerdings die globale Variable nur hast
um damit Werte von einer Funktion zur anderen zu
übergeben, dann ist es das beste du lässt die
globale Variable komplett weg und machst:
1
void futter( int j )
2
{
3
   // hier kannst du dann mit 'j' arbeiten wie
4
   // du lustig bist
5
}

-------
1
int main()
2
{
3
  int i;
4
5
  i = 5;
6
7
  futter( i );    // Der Inhalt von i wird an die Funktion
8
                  // futter übergeben. Innerhalb der Funktion
9
                  // futter ist dieser Wert dann in der Variablen
10
                  // j verfuegbar
11
12
  futter( 8 );    // man braucht dann auch keine Variable auf
13
                  // der absendenden Seite
14
}

> denke ihr könnt mir schneller hlefen, als das ich mich jetzt
> meine C-Bücher hole.

Die sollten sowieso ständig in Griffweite liegen :-)


von Sascha (Gast)


Lesenswert?

Ja, danke für Eure Antworten..
Sie haben mich an mein Ziel gebracht !!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.