Frage

Ich war vor kurzem ein Projekt von GCC zu klappern Portierung (in dem ich eine Reihe von C GNU-isms festgelegt). Dies hat mir denken: was GNU C-isms (Erweiterungen der Programmiersprache C in GCC unterstützt, die nicht standardisiert sind) gibt es? Gibt es eine umfassende Liste überall?

War es hilfreich?

Lösung

Hier ist eine ziemlich umfassende Liste direkt von GCC-Website. Es scheint ziemlich viel zu sein, so dass ich Ihnen viel Glück sichtet es wünschen!

http://gcc.gnu.org /onlinedocs/gcc-4.2.0/gcc/C-Extensions.html

Andere Tipps

Eines der schönsten GNUisms Ich war explizite Schlüssel Erklärung gefunden, während Strukturen zu füllen.

 struct canmsg_t {
      short     flags;
      int       cob;
      canmsg_id_t   id;
      unsigned long timestamp;
      unsigned int  length;
      unsigned char data[CAN_MSG_LENGTH];
 };

 canmsg_t msg = 
 {
      ["flags"] = 0x00;
      ["cob"]   = 0;
      ["id"]    = 0x534;
      ["timestamp"] = 0;
      ["length"] = 1;
      ["data"] = { 0 };
 }

Dies erlaubt keine Mitglieder oder Neuordnungs sie zu überspringen, nur einen Fehler aus, wenn Sie dies tun, aber mit mehr als 100 Elementstrukturen wird dies von unschätzbarem Wert.

Obwohl es viele Erweiterungen sind, und ich aufschieben Antwort auf Beta für das, ist es unwahrscheinlich, dass Ihr Projekt auf viele von ihnen abhängt. Es ist möglich, deaktivieren Sie Erweiterungen in einem GNU Build, so einfach das tun werden Sie jegliche mögliche Inkompatibilitäten in Ihrer Code-Basis warnen geben vorzurücken.

Sie können andere Probleme auftreten, wie beispielsweise die Tatsache, dass GCC unterstützt die meisten C99-Funktionen, während einige populäre Compiler nicht (Microsoft VC ++ spezifisch). So Sie deaktivieren C99 möchten kennzeichnet auch, wenn Sie den Code-Basis testen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top