Pregunta

I fue portar recientemente un proyecto de GCC para sonido metálico (en la que me fijo un número de C GNU-ismos). Esto me hizo pensar: ¿qué existen C de GNU-ismos (extensiones al lenguaje C apoyado en GCC, que no están estandarizados)? ¿Hay una lista completa en cualquier lugar?

¿Fue útil?

Solución

Aquí está una lista bastante completa directamente desde la página web de GCC. Parece que hay mucho, así que le deseo la mejor suerte del tamizado a través de él!

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

Otros consejos

Uno de los mejores GNUisms que encontré fue una declaración clave explícita durante el llenado de las estructuras.

 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 };
 }

Esto no permite saltarse miembros o reordenar ellos, sólo emite un error si lo hace, pero con más de 100 estructuras de elementos de esto se convierte en un valor incalculable.

A pesar de que hay muchas extensiones y delego en la respuesta de Beta para eso, es poco probable que su proyecto se basa en muchos de ellos. Es posible desactivar las extensiones en una acumulación de GNU, por lo que simplemente haciendo que le dará una antelación de posibles incompatibilidades potenciales en su base de código.

Es posible que encuentre otros problemas tales como el hecho de que la mayoría de los soportes del CCG C99 características, mientras que algunos compiladores populares no lo hacen (Microsoft VC ++ específicamente). Así que es posible que desee desactivar C99 características también cuando se prueba la base de código.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top