Si está escribiendo una biblioteca, por favor hacer asegurarse de que un programa sencillo como
#include <yourlib.h>
int main() {
return 0;
}
compila sin ninguna advertencia en absoluto, incluso cuando el compilador está funcionando en el modo más pedante con todas las advertencias opcionales habilitadas .
Si está escribiendo una aplicación, su código que arroja advertencias a la izquierda y derecha es solo el problema de su aplicación. Sin embargo, con el archivo de encabezado público de una biblioteca, todo el mundo que luego use esa biblioteca se verá obligado a ignorar o soportar las advertencias que su código está causando.
Así que por favor compruebe que los encabezados de biblioteca compila sin advertencias, si es posible en múltiples modos de compilación:
$ gcc -Wall -Wextra -Werror -std=c99 -pedantic
$ gcc -Wall -Wextra -Werror -std=gnu99 -pedantic
$ gcc -Wall -Wextra -Werror -std=c89 -pedantic
$ gcc -Wall -Wextra -Werror -std=gnu89 -pedantic
Algunos códigos C99 no son válidos Código C89, que no lo convierte en código incorrecto. La portabilidad entre los dos solo es necesaria si dicha portabilidad es en realidad un objetivo declarado del proyecto. –
+1 Leí sobre la bandera de "Extra" pero no me pareció demasiado útil, pero como casi todos lo recomiendan, parece ser útil. ¿Pero por qué? ¿Para qué es realmente bueno? – helpermethod
@Neil: para aplicaciones, sí. Sin embargo, el archivo de encabezado API público de una biblioteca no debe imponer C99 o C89 al programa que lo incluye. De lo contrario, una biblioteca necesita C89 (pero no C99) y la otra necesita C99 (pero no C89) y como escritor de la aplicación que interactúa con ambas bibliotecas estoy atornillado. – ndim