mikrocontroller.net

Forum: Compiler & IDEs Funktionsdeklaration wird nicht akzeptiert


Autor: Gast-01 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

In meinem Code steht
void schreib (char *Buffer)
{
  while (*Buffer != 0)
 {
  lcd_write (*Buffer++,1);
 };
return;
};
und etwas weiter unten in main:
int main(void) 
  {
   schreib("LCD");   
  ......
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

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was daran fehlt, ist die const-Deklaration des Parameters.
Das würde aber zumindest bei meinem gcc zu
warning: deprecated conversion from string constant to ‘char*’
führen.
Korrekt wäre:
void schreib( const char *Buffer )
...
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

Autor: A. K. (prx)
Datum:

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

Autor: Gast-01 (Gast)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

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

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.