Forum: Mikrocontroller und Digitale Elektronik typedef in AVR Studio


von Leo C. (Gast)


Lesenswert?

Hallo an die Gemeinde

Ich habe ein Problem mit folgenden typedefs:
1
typedef unsigned long DWORD;
2
typedef unsigned char uint8_t;
3
typedef unsigned char BYTE;
4
typedef unsigned int WORD;
5
typedef unsigned char CHAR;
ich bekomme die Fehlermeldung "redefinition of typedef...$

Kann mir jemand sagen, wie ich das hinkriege?

und das 2. ist folgendes:
1
DWORD GetFolderCluster(WORD addr)
2
{
3
  DWORD temp;
4
  temp = eeprom_read_byte(addr);
5
  temp <<= 8;
6
  temp += eeprom_read_byte(addr+1);
7
  temp <<= 8;
8
  temp += eeprom_read_byte(addr+2);
9
  temp <<= 8;
10
  temp += eeprom_read_byte(addr+3);
11
  
12
  return temp;
13
}
Wenn ich dies so kompiliere, gibt es mir die Fehlermeldung:

Error  25  expected 'const unsigned char *' but argument is of type 
'int'

Danke für die Hilfe und Gruss

Leo

von Peter II (Gast)


Lesenswert?

Leo C. schrieb:
> ich bekomme die Fehlermeldung "redefinition of typedef...$

vermutlich wie sie schon definiert sind? Da war halt jemand schneller 
als du.

von Fabian O. (xfr)


Lesenswert?

Du oder eine andere Headerdatei hat wohl stdint.h eingebunden. Da wird 
uint8_t schon definiert. Also kannst Du es nicht selber nochmal anders 
definieren. Ich würde Dir auch dringend empfehlen, die Typen aus 
stdint.h zu benutzen, wenn Du welche mit fester Breite benötigst, 
anstatt selber irgendwas zu definieren. Was soll das denn auch bringen, 
außer Leser des Codes zu verwirren?

Die zweite Fehlermeldung sagt doch schon alles. eeprom_read_byte() 
erwartet die Adresse des Bytes, also einen Zeiger: const unsigned char*. 
Du kannst auch einen uint8_t* nehmen. Aber ein unsigned int (den Du als 
WORD definiert hast) ist nun mal kein Zeiger, sondern eine Zahl.

von Leo C. (Gast)


Lesenswert?

Danke für die Infos, hat geklappt!

Gruss Leo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.