Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C (alle ISO-Standards) ::  "math.h" nicht mit C89 kompatibel     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
avve
Unregistrierter




Beitrag avve Unregistrierter 18:16:10 10.02.2018   Titel:   "math.h" nicht mit C89 kompatibel            Zitieren

Hallo!

Ich hoffe, dass ich mit meiner Frage in dem richtigen Unterforum gelandet bin. Ansonsten bitte einfach verschieben.

Mein Problem ist, dass ich mit dem avr-gcc Compiler gerade mein Projekt C89-kompatibel machen wollte. Als ich es jedoch probiert habe, war nicht mein Code das Problem, sondern der Code aus dem Header "math.h".

Folgende Zeilen scheinen das Problem zu sein:
C:
__ATTR_CONST__ static inline int isfinite (double __x)

sowie
C:
__ATTR_CONST__ static inline double copysign (double __x, double __y)


Die Fehlermeldungen lauten:
C:
/usr/avr/include/math.h:359:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'double'

und
Code:
/usr/avr/include/math.h:359:30: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'double'


Wenn ich den Code mit -std=gnu89 oder -std=c99 kompiliere, dann funktioniert alles einwandfrei. Ist __ATTR_CONST__ nicht im C89-Standard definiert oder was könnte das Problem sein? Gibt es dafür irgendwie Abhilfe?

Ich wäre für jede Hilfe dankbar!
Th69
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 4831
Beitrag Th69 Mitglied 20:47:54 10.02.2018   Titel:              Zitieren

Es liegt am Schlüsselwort inline: Does ANSI-C not know the inline keyword?
avve
Unregistrierter




Beitrag avve Unregistrierter 22:33:02 10.02.2018   Titel:              Zitieren

Lohnt es sich, eine Pullrequest in avr-libc zu machen oder wird das sowieso verworfen?
Andererseits ist es vermutlich auch egal, da, wenn es der Compiler beherrscht, man sowieso üblicherweise den neusten Standard verwendet.
Ich wollte nur auf jeden Fall ein C89-kompatibles Projekt haben.

Auf jeden Fall danke für die Aufklärung!
Th69
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 4831
Beitrag Th69 Mitglied 10:15:58 11.02.2018   Titel:              Zitieren

Solange deine eigenen Dateien C89 kompatibel sind, ist es ja i.O.
Andere Compiler bringen ja ihre eigenen Standard-Header mit (welche dann hoffentlich mit den verschiedenen Versionen besser umgehen).
avve
Unregistrierter




Beitrag avve Unregistrierter 13:19:26 11.02.2018   Titel:              Zitieren

Ja, das war auch mein Gedankengang.

Wobei die Auswahl an AVR-C-Compilern ja sowieso beschränkt ist.
Und vom C-Standard wird das (zumindest meines Wissens) nicht gedeckt.

Vielen Dank!
C++ Forum :: C (alle ISO-Standards) ::  "math.h" nicht mit C89 kompatibel   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.