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
>void set_cursor(uint8_t x, uint8_t y);
Ist das jetzt die Funktion oder der Funktionsaufruf?
Bei Ersterem muß das Semikolon weg.
>Funktionsaufruf?
Natürlich Funktionsprototyp.
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
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.
gleiches phänomen...scheint an meiner gcc version zu liegen, bei nem freund gehts...
Was für einen Compiler benutzt Du denn?
@ 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
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
>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);
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.