mikrocontroller.net

Forum: Compiler & IDEs Programm auf mehrere C-Files aufteilen


Autor: Gerald Gruber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen!

Ich habe ein Problem, mit dem ich mich jetzt schon ziemlich lange
rumschlage:
Und zwar: Um mein Programm ein bisschen übersichtlicher zu gestalten
wollte ich meine globalen Variablen und ein paar Methode in ein eigenes
C-File "auslagern" (Datei heißt common.c). Dazu gibt es auch ein
Header-File in dem ein paar Defines sind (common.h) welche von common.c
und main.c ("Hauptprogramm") includiert wird. In common.h hab ich
jetzt noch die Prototypen von common.c geschrieben, damit main.c sie
auch benutzen kann. Mein Problem sind jetzt noch die globalen
Variablen: Deklariere ich sie in common.c, erkennt main.c die Variablen
nicht. Schreibe ich sie jedoch in common.h, bekomme ich die Warnung,
dass sie doppelt deklariert wurden!
Wie oder Wo muss ich die globalen Variablen definieren??

Danke im voraus,

Gerald

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der .h datei die variablen als extern deklarieren und in alle dateien
einbinden.

zb. in common.h
extern unsigned short int GobVarX;
extern unsigned char Array[10];

in der main.c oder der common.c wird jetzt dir varible deklariert.
unsigned short int GobVarX;
unsigned char Array[10];

jetzt kannst du aud die glablen variblen zugreifen wenn du immer die*.h
datei einbindest.

Sebastian

Autor: Peter Mahler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


deklariere deine globalen Variablen in der zu common.c gehörigen
Header-Datei(common.h) als extern und dann noch innerhalb von common.c
ohne extern.

Beispiel

common.h :
extern int GlobaleVariable;

common.c :

int GlobaleVariable;


main.c

#include "common.h"


void main(void) {
  GlobaleVariable++;
}

Gruss,

Peter

Autor: Gerald Gruber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen!

WOW,danke für eure schnelle Hilfe!
Jetzt funktioniert es endlich so wie es soll!

mfg, Gerald

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.