www.mikrocontroller.net

Forum: Compiler & IDEs Fehler beim einbinden von String.h


Autor: Thomas N. (thomas8443)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Bin in Sachen GCC noch ein ziemlicher Anfänger und brauche bitte eure 
Hilfe.

Habe in meinem Programm vor mit Strings zu arbeiten und logischerweise 
benötige ich dafür String.h. Doch wenn ich diese Include-Datei einbinde 
erhalte ich folgenden Fehler:

c:/programme/atmel/avr tools/lib/gcc/../../avr/include/String.h:130: 
error: expected ';', ',' or ')' before '!' token

habe probiert diese datei über eine externe header-datei einzufügen oder 
direkt in der c-datei -> alles ohne erfolg!
fehler tritt auch noch auf, wenn ich alle String - Funktionen im 
Programm lösche! Datei selbst ist aber nicht fehlerhaft, das habe ich 
überprüft!

Habt ihr eine Idee was ich gegen diesen fehler machen kann?
Danke für eure Hilfe!!!!

lg tommy

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Poste bitte Deinen Quelltext. Die string.h lässt sich normalerweise 
problemlos mit dem Befehl "#include <string.h>" einbinden.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die h-Files immer als erstes einbinden.

Dann führen eigene Syntaxfehler nicht zu Fehlermeldungen in den h-Files.


Peter

Autor: Manni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dann führen eigene Syntaxfehler nicht zu Fehlermeldungen in den h-Files.

Schon, aber erst in Zeile 130?


Der Quellcode und auch die string.h würden mich interessieren.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oder String.h statt string.h?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeile 130 in string.h lautet:
extern size_t strlcpy(char *, const char *, size_t);

Weit und breit kein "!". In der ganzen Datei gibt es sowieso nur ein 
"!", und das steckt in einem Kommentar.

Irgendwie ist deine String.h kaputt :-)
Installier die mal neu (oder gleich das ganze WinAVR-Paket).
Oliver

Autor: Compilerfehler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ja, deshalb wäre es auch mal schön, wenn man den ganzen Quelltext 
sehen dürfte, in dem die string.h eingebunden ist, denn dort ist mit 
Sicherheit der Fehler zu finden!

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, der Fehler steckt schon in Zeile 130 der string.h.

Da ist die Fehlermeldung eindeutig. Und ausser mit sowas wie :
#define strlcpy irgendeinBlödsinn!

o.ä. vor dem include dürfte man die kaum hinbekommen. Alle anderen 
Ausdrücke, wie size_t oder char, kommen schon vorher in der Datei vor.

>Datei selbst ist aber nicht fehlerhaft, das habe ich
>überprüft!

Ich vermute trotzdem, daß da mal jemand beim anschauen der string.h im 
Editor aus versehen Zeichen eingefügt hat.

Aber den ganze Code hier mal anzuhängen, schadet nie.

Oliver

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

Bewertung
0 lesenswert
nicht lesenswert
Meine Glaskugel sagt, dass jemand verbotenerweise einen Makro
definiert hat, der dem Funktionsnamen gleicht, der in <string.h>
auf Zeile 130 deklariert werden soll.  Dieser Makro enthält ein
Ausrufezeichen.

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.