undeclared (first use in this function)

Gast #2180085
Lesenswert?

Hallo,

mein C ist ein wenig eingerostet und ich habe beim Aufarbeiten meiner 
alten Projekte ein Problem.

Mein Programm hat eine header.h, uart.c und  main.c.

in der Uart.c definierse ich folgende Variable:
1
volatile char uart_string[UART_MAXSTRLEN + 1] = "";

Diese wird dann von der Interrupt routine in der gleichen Datei genutzt.
Nun möchteich sie aber in in der Main.c nutzen dies klapt aber nicht.
1
   if(uart_string[0] == 'a')
2
  {
3
....

Ich bekomme dann folgenden Fehler
1
Fehler  2  'uart_string' undeclared (first use in this function)  C:\...\main.c  20  7  uart1

Ist habe bestimmt irgendwas Grundlegendes vergessen. Vielen Dank
Moderator Persönliche Seite #2180285
Lesenswert?

Wenn du dir mal den Unterschied zwischen einer Deklaration und einer
Definition vergegenwärtigst, dann kannst du das auch bereits aus der
Fehlermeldung deuten.

Über die fehlende Deklaration beklagt sich bereits der Compiler,
denn er hat zu dem Zeitpunkt, da er main.c compiliert, keine Kennung
davon erhalten, was denn uart_string für ein Objekt sein soll.  Falls
uart_string jedoch ordnungsgemäß deklariert wäre, am Ende aber in
keiner einzigen Objektdatei zu finden wäre, würde sich der Linker
über eine fehlende Definition dieses Symbols beschweren (Objekte und
Funktionen hält der Linker nur noch bedingt auseinander; für ihn sind
das alles nur noch Symbole, die er auflösen muss, d. h. denen er
letztlich einen Platz in einem Segment zuweist, um damit das Symbol
einer Adresse zuordnen zu können).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren