Compilerfehler mit enum-Konstante, ratlos

Gast #4194005
Lesenswert?
• ▲
▼
Hallo,
ich benutze AVR8 GCC 3.4.1 (Studio 6.2).

In einer Header-Datei "PeripherieRoutinen.h" steht:

typedef enum faultoutp_enum
{
  FAULTOUT_LOWS  = 0,    /**< Fehleraktion: Ausgänge auf low */
  FAULTOUT_HIGHS  = 1,    /**< Fehleraktion: Ausgänge auf high */
  FAULTOUT_HIZ  = 2,    /**< Fehleraktion: Ausgänge hochohmig */
} AWEX_faultoutp_t;

In der c-Datei steht:

#include "PeripherieRoutinen.h"

void Set_AWEX_Channel(AWEX_t *awex, char channel, AWEX_complbridge_t 
complbridge, AWEX_faultoutp_t faultoutp)
{
....
   if(faultoutp == AWEX_FAULTOUT_HIZ)
...
}

Der Compiler meldet mit in der c-Datei den Fehler:
'AWEX_FAULTOUT_HIZ' undeclared (first use...)

Ich weis einfach nicht, was da falsch sein soll. In den ioxxx.h ist es 
doch genauso gemacht?
Gast #4194021
Lesenswert?
• ▲
▼
Naja. In Fällen von solchen Meldungen, wenn man nicht auf Anhieb darauf 
kommt und steinhart schwören würde, dass der als undeclared bezeichnete 
Term doch deklariert bzw. definiert wurde, sucht man einfach mal in 
allen Dateien danach.
Wenn man dann nicht fündig wurde (das ist dann eine Bestätigung der 
Compilermeldung), guckt man mal, wo das seiner Meinung nach deklariert 
bzw. definiert sein sollte und starrt das solange im Vergleich mit der 
inkriminierten Stelle an, bis der Groschen fällt (falls man noch 
Groschen hat). :-) Falls man den Term doch findet, fehlt die 
entsprechende Datei im Projekt.
#4194023
Lesenswert?
• ▲
▼
Felix A. schrieb:
> Das Komma hinter "FAULTOUT_HIZ  = 2,  " könnte auch noch Probleme
> machen.

Das ist schon ok.
Das ist erlaubt. Genauso wie hier bei einer Array Initialisierung
1
int a[] = {  5,
2
             6,
3
             7,
4
          };

Das ist eines der Dinge, bei der die Sprachdesigner den Programmierer im 
Mittelpunkt gesehen haben, der Initialisierungen (speziell wenn Arrays 
aus struct initialisiert werden) von einer Zeile zur nächsten 
weiterkopiert. Will man dann einen weiteren Wert ergänzen, dann ist das 
ein 'pain in the ass', wenn man da jedesmal in der vorhergehenden Zeile 
erst noch einen , ergänzen muss. Da ist es ganz praktisch, wenn man 
einen , machen darf, auf den dann kein Wert mehr folgt.
Gast #4194030
Lesenswert?
• ▲
▼
@  Felix Adam

Es geht mit einem abschließenden ","!
Das wundert mich auch, da im Internet Beispiele ohne das "," beim letzen 
Element.
Jedoch habe ich gesehen, dass in den ioxx.h des Compilers jedes Element 
ein Komma am Ende hat. Wird wohl nicht ganz Standard-konform sein.
#4194038
Lesenswert?
• ▲
▼
Klaus schrieb:
> Falls man keine Groschen hat, gehen auch 20 Cent Stücke. Die sind
> ungefähr genauso schwer und genauso viel wert (nach dem offiziellen
> Umrechnungskurs von Deutschen Mark).

Vielleicht nach Inflationsbereinigung, nach dem offiziellen Kurs 
müsstest du jedoch ein 5 Cent Stück nehmen, das ist dann aber leichter 
als ein Groschen.
Gast #4194053
Lesenswert?
• ▲
▼
Malte S. schrieb:
> Vielleicht nach Inflationsbereinigung, nach dem offiziellen Kurs
> müsstest du jedoch ein 5 Cent Stück nehmen, das ist dann aber leichter
> als ein Groschen.

Richtig. Danke. Da habe ich falsch herum gerechnet. Dann ist es also 
billiger geworden, wenn der Groschen fällt. :-)

Antwort schreiben

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.

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.