Forum: Compiler & IDEs Problem mit uint8_t : void namevar(uint8_t x, uint8_t y) == Error


von µluxx .. (uluxx) Benutzerseite


Lesenswert?

Hallo,
ich steige gerade in C ein, und eine LCD-Routine beinhaltet folgende 
Deklaration:

void set_cursor(uint8_t x, uint8_t y);

Der Compiler mag das allerdings nicht, er meldet:

lcd.h:11: error: expected ')' before 'x'

Meine GCC Version ist die avrgcc 4.3.0

Ich verwende die "stdint.h" habe aber auch schon inttypes.h versucht, 
gleiches Problem. Kann mir da wer helfen?

MFG
µLuxx

von AVR Abtrünniger (Gast)


Lesenswert?

>void set_cursor(uint8_t x, uint8_t y);
Ist das jetzt die Funktion oder der Funktionsaufruf?
Bei Ersterem muß das Semikolon weg.

von AVR Abtrünniger (Gast)


Lesenswert?

>Funktionsaufruf?
Natürlich Funktionsprototyp.

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

keins von beidem, das steht in der headerdatei der lcd-routine,
 das ganze sieht so aus:
1
// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
2
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
3
//
4
void lcd_data(unsigned char temp1);
5
void lcd_string(char *data);
6
void lcd_command(unsigned char temp1);
7
void lcd_enable(void);
8
void lcd_init(void);
9
void lcd_home(void);
10
void lcd_clear(void);
11
void set_cursor(uint8_t x, uint8_t y);
12
 
13
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
14
 
15
16
 
17
// LCD Befehle
18
 
19
#define CLEAR_DISPLAY 0x01
20
#define CURSOR_HOME   0x02
21
 
22
// Pinbelegung für das LCD, an verwendete Pins anpassen
23
 
24
#define LCD_PORT      PORTC
25
#define LCD_DDR       DDRC
26
#define LCD_RS        PC5
27
#define LCD_EN        PC4
28
// DB4 bis DB7 des LCD sind mit PC0 bis PC3 des AVR verbunden


warum sind die vorhandenen Funktionen dort überhaupt aufgefürht?

(sry, bin noch neu in C)

µLuxx

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

also eher der prototyp...

von AVR Abtrünniger (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/Funktionsprototyp

>void set_cursor(uint8_t x, uint8_t y);
Schreib mal-> void set_cursor(unsigned char x, unsigned char y);
und schau was passiert.

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

gleiches phänomen...scheint an meiner gcc version zu liegen, bei nem 
freund gehts...

von AVR Abtrünniger (Gast)


Lesenswert?

Was für einen Compiler benutzt Du denn?

von Falk B. (falk)


Lesenswert?

@ AVR Abtrünniger (Gast)

>Schreib mal-> void set_cursor(unsigned char x, unsigned char y);
>und schau was passiert.

Nöö, uint8_t ist erstens kürzer und zweitens standardisiert.

Der Op muss "nur" einfach den code aus dem Tutorial VOLLSTÄNDIG und ohne 
Änderung übernehmen, dann klapp das auch mit dem Kompilieren. Den 
unit8_t ist kein C-Standardtyp, der wird erst in stdint.h defniert, 
welches wiederum in io.h drinsteckt.

MFG
Falk

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

irgendwie kann hier keiner lesen o_O...
steht doch alles da:

gcc 4.3.0

und ja, die sdtint.h ist included und testweise auch die inttypes.h


µLuxx

von Walter (Gast)


Lesenswert?

>gleiches phänomen...scheint an meiner gcc version zu liegen, bei nem
>freund gehts...

glaub ich nicht!
Schreib mal ein "Programm" mit nur einer Zeile:

void set_cursor(unsigned char x, unsigned char y);

von AVR Abtrünniger (Gast)


Lesenswert?

Und ist das Problem gelöst?

von µluxx .. (uluxx) Benutzerseite


Lesenswert?

nein...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dann guck dir mal die Ausgabe vom Präprozessor an dieser Stelle an.
Die bekommst du, indem du in der Kommandozeile das -c durch ein -E
ersetzt und den Namen hinter -o (output file name) entsprechend
anpasst.

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.