Forum: Compiler & IDEs Funktionsdeklaration wird nicht akzeptiert


von Gast-01 (Gast)


Lesenswert?

Hallo,

In meinem Code steht
1
void schreib (char *Buffer)
2
{
3
  while (*Buffer != 0)
4
 {
5
  lcd_write (*Buffer++,1);
6
 };
7
return;
8
};
und etwas weiter unten in main:
1
int main(void) 
2
  {
3
   schreib("LCD");   
4
  ......
Sieht für mein Gefühl ganz normal aus, trotzdem mault der Compiler:
291: warning: implicit declaration of function 'schreib'.
Ich weiß natürlich, daß der Compiler immer recht hat, aber was kann man 
denn an meinem Code noch ändern, daß es er akzeptiert wird?

Viele Grüße
Gast-01

von Klaus W. (mfgkw)


Lesenswert?

Was daran fehlt, ist die const-Deklaration des Parameters.
Das würde aber zumindest bei meinem gcc zu
1
warning: deprecated conversion from string constant to ‘char*’
führen.
Korrekt wäre:
1
void schreib( const char *Buffer )
2
...
Ansonsten könntest du ja das übergebene Stringliteral "LCD"
innerhalb der Funktion ändern, was bei Konstanten nicht geht.

Im übrigen ist nach der while-Schleife ein Semikolon zuviel,
und die Einrückungen sind schlecht, aber mehr habe ich nicht
zu meckern.

Ich habe allerdings auch den Verdacht, daß du noch etwas
unterschlagen hast, weil der gezeigte Quelltext keine 291 Zeilen
hat.

Wird das als C oder als C++ kompiliert?


mfgkw

von (prx) A. K. (prx)


Lesenswert?

Such mal nach hängenden Kommentaren oder Präprozessor-#if Statements. 
Denn wie aus der Fehlermeldung hervorgeht sieht der Compiler die 
Funktionsdefinition überhaupt nicht.

Wie üblich ist es nicht hilfreich, dass du nur den Teil gepostet hast in 
dem du das Problem vermutest. Denn dort liegt es nicht.

von Gast-01 (Gast)


Lesenswert?

Vielen Dank für Eure Hilfe!

>Such mal nach hängenden Kommentaren oder Präprozessor-#if Statements.
>Denn wie aus der Fehlermeldung hervorgeht sieht der Compiler die
>Funktionsdefinition überhaupt nicht.

Das war es - beim Anpassen eines Programms an neue Gegebenheiten war ein 
if
dringeblieben!

>Wie üblich ist es nicht hilfreich, dass du nur den Teil gepostet hast in
>dem du das Problem vermutest. Denn dort liegt es nicht.

Das hat etwas von eeiner Zwickmühle an sich:

man ist dankbar, wenn einem einer hilft, und ich finde, man sollte sich 
die Mühe machen, aus dem Wust von Programm und Kommentaren die 
wichtigsten Stellen zu extrahieren, um dem freundlichen Helfer unnötige 
Mühe zu ersparen;

anderseits fallen dann leicht die Stellen unter den Tisch, an die man 
nicht gedacht hatte.

Vielen Dank nochmals
Gast-01

von Rolf Magnus (Gast)


Lesenswert?

> Das hat etwas von eeiner Zwickmühle an sich:
>
> man ist dankbar, wenn einem einer hilft, und ich finde, man sollte
> sich die Mühe machen, aus dem Wust von Programm und
> Kommentaren die wichtigsten Stellen zu extrahieren, um dem
> freundlichen Helfer unnötige Mühe zu ersparen;
>
> anderseits fallen dann leicht die Stellen unter den Tisch, an die man
> nicht gedacht hatte.

Die meistens empfohlene Vorgehensweise ist, daß man zunächst seinen Code 
so weit wie möglich verkürzt, aber so, daß er noch ein vollständiges 
Programm ist und den Fehler hervorruft. Erst wenn du das minimale 
Programm gefunden hast, das den Fehler immer noch zeigt, das dann 
komplett posten. Ein "Nebeneffekt" dieser  Vorgehensweise ist, daß man 
dabei den Fehler meistens schon selbst findet.

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.