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?
Alexxx schrieb:> Der Compiler meldet mit in der c-Datei den Fehler:> 'AWEX_FAULTOUT_HIZ' undeclared (first use...)
Logisch.
Deine Werte heissen ja auch
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.
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
inta[]={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.
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).
@ 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.
Ah, okay. Ich meinte mich erinnern zu können, dass sowas bei mir zu
Fehlern geführt hat. Ein kurzer Test mit dem AVR Studio meldet aber
keinen Fehler.
Also doch erlaubt.
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).
Nö, da hast Du 1:2 mit 2:1 velwechsert. ;-)
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.
Felix A. schrieb:> Ah, okay. Ich meinte mich erinnern zu können, dass sowas bei mir zu> Fehlern geführt hat.
In C ist so etwas erlaubt, aber nicht in z.B. VHDL. Dort darf leider
kein Komma am Ende einer Aufzählung stehen. :-(
Das ist doch nur erlaubt, damit man Code leichter automatisch erzeugen
lassen kann und man in einer Schleife keine Fallunterscheidung machen
muss, ob ein Komma nötig ist oder verboten...
Walter Tarpan schrieb:> Alexxx schrieb:>> ich benutze AVR8 GCC 3.4.1 (Studio 6.2)>> Nanu, ist bei Atmel-Studio 6.2 nicht ein AVR-GCC 8.xx dabei?
Sollte heißen: 4.8.xx
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. :-)
Walter Tarpan schrieb:> Walter Tarpan schrieb:>> Alexxx schrieb:>>> ich benutze AVR8 GCC 3.4.1 (Studio 6.2)>>>> Nanu, ist bei Atmel-Studio 6.2 nicht ein AVR-GCC 8.xx dabei?>> Sollte heißen: 4.8.xx
Das 3.4.1 ist die Version der Atmel-Toolchain, nicht die des Compilers
:)
und ja, fuer AVR ist glaube ich ein GCC 4.8.3 und fuer ARM ein GCC 4.8.1
dabei.
Gruesse