mikrocontroller.net

Forum: Compiler & IDEs "Funktionsdeklaration ist kein Prototyp"-Warnung


Autor: Ulrich Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe erst vor ein paar Tagen mit C angefangen - meine Programme
laufen zwar, aber ich bekomme beim Kompilieren ständig die
Fehlermeldung
"Warnung: Funktionsdeklaration ist kein Prototyp"
angezeigt. Was mache ich falsch, wie werde ich diese Fehlermeldung
los?

Selbst Google war nicht wirklich hilfreich... :-(

Autor: Steini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Glaskugel kann mir Deinen Quelltext nicht anzeigen, oder meine
Brille ist beschlagen, einfach den Quelltext posten, dann schaun mer
mal...

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

Bewertung
0 lesenswert
nicht lesenswert
Naja, prinzipiell heißt die Warnung erstmal, dass du "old style"
(pre-ANSI-C) Funktionsdeklarationen schreibst.  Also zum Beispiel

foo()
{
   ...
}

statt

void foo(void)
{
   ...
}

Autor: Ulrich Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahja, das war das Problem.

Ich hatte zwar den Rückgabetyp immer angegeben selbst wenn er void war,
aber bei einer leeren Parameterliste habe ich nur () statt (void)
geschrieben.

Danke Jörg!

Autor: Steini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg Wunsch (dl8dtl)

Respekt für Deine hellseherischen Fähigkeiten.
Wo gibt es den Bauplan für Deine Glaskugel...

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber bei einer leeren Parameterliste habe ich nur () statt (void)
> geschrieben.

() war eigentlich noch nie eine leere Parameterliste, sondern eine
nicht häher spezifizierte. Einer so deklarierten Funktion kann man beim
Aufruf auch fälschlicherweise Parameter übergeben, ohne daß der Compiler
da meckert.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steini

Einfach mal gelegentlich die Batterien tauschen oder ist deine Kugel
solarbetrieben? Vielleicht liegt es daran, daß die Sonne nicht scheint.

Autor: Edd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Steini:

Jörg ist über das Stadium, in dem man noch eine Glaskugel braucht,
schon lange hinaus... ;-)

Edd

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

Bewertung
0 lesenswert
nicht lesenswert
> () war eigentlich noch nie eine leere Parameterliste, sondern eine
> nicht häher spezifizierte.

In C++ ist es eine leere Parameterliste und damit äquivalent zu
(void).  C++ hat keinen pre-C89-Ballast mit sich herumzutragen. ;-)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> C++ hat keinen pre-C89-Ballast mit sich herumzutragen. ;-)

Dafür trägt es C89 selbst als Ballast mit sich rum. ;-)

Autor: Daniel Braun (khani)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Off Topic :
Dieser Glaskugel-Müll macht keinen Sinn. Mit der Zeit weiß man, was
bestimmte Symptome erzeugt auch wenn amn den Source-Code nicht kennt
(ich spreche aus Erfahrung).
Wenn man zu wenig Informationen zu einer Frage vom Fragesteller
bekommt, kann man doch auch freundlich aber bestimmt darauf hinweisen
und nicht den überlegenen Hammerversteher und -wisser herauskehren.

Der Ton ist manchmal einfach bescheiden hier.

MfG, Daniel.

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die übliche Arroganz der "Profis" halt...

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.