www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie Variable deklarieren?


Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: andreas kasper (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, zwei Source Files...!

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip hat Andreas zwar recht, aber sauberer ist folgende 
Vorgehensweise:


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

// Datei1.c (Definition der globalen Variablen)
#include "Datei1.h"

int wert;

// Datei2.c (Verwendung der globalen Variablen)
#include "Datei1.h"

int funktion(void)
{
  wert = 0;

  return (wert);
}

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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:
void futter( int j )
{
   // hier kannst du dann mit 'j' arbeiten wie
   // du lustig bist
}

-------
int main()
{
  int i;

  i = 5;

  futter( i );    // Der Inhalt von i wird an die Funktion
                  // futter übergeben. Innerhalb der Funktion
                  // futter ist dieser Wert dann in der Variablen
                  // j verfuegbar

  futter( 8 );    // man braucht dann auch keine Variable auf
                  // der absendenden Seite
}

> 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 :-)


Autor: Sascha (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.