mikrocontroller.net

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


Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: AVR Abtrünniger (Gast)
Datum:

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

Autor: AVR Abtrünniger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Funktionsaufruf?
Natürlich Funktionsprototyp.

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keins von beidem, das steht in der headerdatei der lcd-routine,
 das ganze sieht so aus:
// Ansteuerung eines HD44780 kompatiblen LCD im 4-Bit-Interfacemodus
// http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
//
void lcd_data(unsigned char temp1);
void lcd_string(char *data);
void lcd_command(unsigned char temp1);
void lcd_enable(void);
void lcd_init(void);
void lcd_home(void);
void lcd_clear(void);
void set_cursor(uint8_t x, uint8_t y);
 
// Hier die verwendete Taktfrequenz in Hz eintragen, wichtig!
 

 
// LCD Befehle
 
#define CLEAR_DISPLAY 0x01
#define CURSOR_HOME   0x02
 
// Pinbelegung für das LCD, an verwendete Pins anpassen
 
#define LCD_PORT      PORTC
#define LCD_DDR       DDRC
#define LCD_RS        PC5
#define LCD_EN        PC4
// 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

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also eher der prototyp...

Autor: AVR Abtrünniger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

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

Autor: AVR Abtrünniger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für einen Compiler benutzt Du denn?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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);

Autor: AVR Abtrünniger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ist das Problem gelöst?

Autor: µluxx .. (uluxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.