typedef in AVR Studio

Gast #3050301
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
#3050318
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.

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