Hallo Zusammen,
ich würde gerne die MAX Adresse aus einem 24AA02E48 (I2C) bzw. einem
25AA02E48 (SPI) auslesen. Nun bin gerade dabei den Code zu optimieren.
Um die Ansteuerung des Busses geht es nicht.
Leider stoße ich bei der Deklaration von einem einfachen Array auf ein
Problem. Wenn die die einzelnen Teile in einzelne Variablen schreibe
dann funktioniert alles. Allerdings wenn ich das ganze mit einem Array
versehen will mekert der Compiler -> conflicting declarations for
variable "MAC_Adr". Ich bin mir sicher dass dies nur eine Winzigkeit bei
der Schreibweise ist. Weiß jemand waran das liegt?
Ingo S. schrieb:> // Variante 2 mit Array geht nicht> const unsigned int MAC_Adr[] = {0x00,0x00,0x00,0x00,0x00,0x00};> MAC_Adr[0] = 0x00;> MAC_Adr[1] = 0x04;> MAC_Adr[2] = 0xa3;> MAC_Adr[3] = 0x00;> MAC_Adr[4] = 0x16;> MAC_Adr[5] = 0x06;
Ein als "const" definiertes Array sollte man auch nicht mehr ändern
wollen. Dann wäre es ja nicht konstant.
Lass einfach das "const" weg!
unsigned char MacAddr[6];
-> unsigned char ist für MAC Adressen der passende Typ
-> Länge des Array bei der Deklaration explizit angeben.
-> Initialisierung mit Nullen ist überflüssig.
fchk
> -> unsigned char ist für MAC Adressen der passende Typ> -> Länge des Array bei der Deklaration explizit angeben.> -> Initialisierung mit Nullen ist überflüssig.
+ Vielleicht mal einen K&R kaufen.
Ingo S. schrieb:> Der Compiler meckert immer noch.
Ah der MCC... Ich glaube das Zeug, das Mikrochip so mitliefert, ist
nicht C99 kompatibel. Stell das mal auf C90 um!?
Teo D. schrieb:> Ah der MCC... Ich glaube das Zeug, das Mikrochip so mitliefert, ist> nicht C99 kompatibel. Stell das mal auf C90 um!?
Wenn man keine Ahnung hat, einfach mal die Fresse halten!
XC8 Kann C99!
Ingo S. schrieb:> // Variante 2 mit Array geht nicht> const unsigned int MAC_Adr[] = {0x00,0x00,0x00,0x00,0x00,0x00};> MAC_Adr[0] = 0x00;> MAC_Adr[1] = 0x04;> MAC_Adr[2] = 0xa3;> MAC_Adr[3] = 0x00;> MAC_Adr[4] = 0x16;> MAC_Adr[5] = 0x06;
Wie denn auch, ausserhalb einer Funktion kannst du nur initalisieren und
nicht eine Zuweisung durchführen!
g457 schrieb:> // Variante 2 mit Array geht> const unsigned int MAC_Adr[] = { 0x00, 0x04, 0xa3, 0x00, 0x16, 0x06 };
Korrekt!
AllesKönner schrieb:> Wenn man keine Ahnung hat, einfach mal die Fresse halten!> XC8 Kann C99!
Dito..... 8-O
Der CX8 ja, nicht aber die Programmierer bei Mikrochip.
Ich hatte ständig Ärger mit angeblichen doppelten Deklarationen in den
MCC_Files, die ich nicht nachvollziehen konnte. Auf C90 umgestellt und
alles funst wie gedacht und erwartet...
Teo D. schrieb:> Ich hatte ständig Ärger mit angeblichen doppelten Deklarationen in den> MCC_Files, die ich nicht nachvollziehen konnte. Auf C90 umgestellt und> alles funst wie gedacht und erwartet...
Das ist wohl eher ein Problem der Hausfrau und deine Lösung via "Einfach
mal den Stecker ziehen und wieder reinstecken" entspricht diesem Level.
Ich arbeite seit Jahren mit xc8 und kann sagen, dass es gibt kein
Problem mit xc8 und c99 Konformität gibt.