Funktionsdeklaration wird nicht akzeptiert

Gast #1336345
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
#1336360
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
#1336374
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.
Gast #1338068
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
Gast #1338288
> 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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.