Implicit declaration of function.

Gast #4427844
Lesenswert?

Hallo,
ich brauche mal ein paar mehr Augen. Ich bin dabei mir eine Bib für den 
HD44780 zu schreiben. Das klappt soweit ganz gut, nur ein kleines 
Problem taucht auf:
Error    implicit declaration of function 'lcd_command' 
[-Werror=implicit-function-declaration]         61
Message    previous implicit declaration of 'lcd_command' was here 
61
Warning    no previous prototype for 'lcd_command' 
[-Wmissing-prototypes]  131

Vielleicht ist es banal aber ich steh hier scheinbar auf dem Schlauch. 
Normalerweise sagt das doch aus, dass die Funktion vor ihrem Aufruf 
nicht bekannt ist. Ich habe sie aber im headerfile bekannt gemacht. 
Warum kappiert der das nicht? Wo steckt denn hier der Fehler?

1
#ifndef HD44780_H_
2
#define HD44780_H_
3

4

5
void lcd_init(void);                    //Initialisieren
6
void lcd_clear(void);                    //Displayinhalt löschen
7
void lcd_entry(bool increment, bool shift);          //Eingabemodus einstellen (increment - rückt nach eingabe ein Zeichen weiter; shift - dynamischer Text)
8
void lcd_display(bool display, bool cursor, bool blink);  //Displaymodus einstellen (display - schaltet Display an und aus; curser - zeigt den Cursor; blink - Cursorblinken)
9
void lcd_enable(void);                    //Anliegende Daten senden
10
void lcd_write(char x);                    //Ein Zeichen senden
11
void lcd_command(uint8_t command);                //Befehl geben
12
void lcd_text(char text[]);                  //Einen Text senden
13
void lcd_set_cursor(int zeile, int zeichen);        //Curserposition setzen
14

15

16
#endif /* HD44780_H_ */

HD44780.c
1
#include <asf.h>
2
#include <avr/io.h>
3
#include <header.h>
4
#include <util/delay.h>
5
#include <HD44780.h>
6

7
...
8

9
void lcd_clear(void){
10
  lcd_command(0x01);         //Zeile 61
11
}
12

13
...
14

15
void lcd_command(uint8_t command){       //Zeile 131
16
...
17
}
18

19
...
Persönliche Seite #4427884
Lesenswert?

$NAME schrieb:
> Wo liegt deine lib?

Es ist keine. Aber das ist nicht das Problem des Threadstarters - der 
Compiler würde sich beschweren, wenn er eine angegebene Headerdatei 
nicht finden kann.

Die Meldung "implicit declaration" wird aber nicht beim Übersetzen des 
geposteten Sourcecodes ausgegeben, sondern beim Übersetzen des /nicht 
gezeigten/ Sourcecodes, der versucht, die Funktionen aufzurufen. Und 
da wird die Headerdatei schlichtweg nicht eingebunden sein.
Gast #4427887
Lesenswert?

Vielen Dank so gehts.
Ich habe aber auch einen header.h für mein mainfile und das include ich 
genauso mit <> und da gehts komischerweise obwohl es genauso im gleichen 
Ordner liegt...
Und auch die asf.h liegt ja im gleichen Ordner.
Irgendwie erkenne ich den Sinn dahinter nicht.
Gast #4427897
Lesenswert?

Sucher schrieb:
> Vielen Dank so gehts.
> Ich habe aber auch einen header.h für mein mainfile und das include ich
> genauso mit <> und da gehts komischerweise obwohl es genauso im gleichen
> Ordner liegt...
> Und auch die asf.h liegt ja im gleichen Ordner.
> Irgendwie erkenne ich den Sinn dahinter nicht.

https://www.mikrocontroller.net/articles/Include-Files_%28C%29

Hängt also davon ab was du als Include Pfad definierst (Beim GCC sind 
das die -I parameter).

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