ANSI C está soportado hoy en día por casi la totalidad de los compiladores. La mayoría del código C que se escribe actualmente está basado en ANSI C. Cualquier programa escrito sólo en C estándar sin código que dependa de un hardware determinado funciona correctamente en cualquier plataforma que disponga de una implementación de C compatible. Sin embargo, muchos programas han sido escritos de forma que sólo pueden compilarse en una cierta plataforma, o con un compilador concreto, esto puede ser debido a diversos motivos:
La utilización de bibliotecas no estándar, como interfaces gráficas de usuario.
El uso de compiladores que no cumplen las especificaciones del estándar.
El uso de tipos de datos suponiendo que tendrán el mismo tamaño u orden de los bits en todas las plataformas.
La macro __STDC__ puede usarse para dividir el código en secciones ANSI y K&R para el compilador.
# if __STDC__
extern int getopt(int,char * const *,const char *);
# else
extern int getopt();
# endif
Algunos programadores recomiendan usar \"#if __STDC__\", como en el ejemplo, en lugar de \"#ifdef __STDC__\" porque algunos compiladores le asignan el valor cero a __STDC__ para indicar que no son compatibles con ANSI.
En el siguiente ejemplo, el programa pide al usuario que introduzca un número. El programa dividirá dicho número entre 2 e imprimirá el resultado mientras que este sea par, y terminará cuando el número sea impar:
#include
int main(void) {
int numero;
fputs(\"Introduzca un número entero par: \", stdout);
scanf(\"%d\", &numero);
if (!numero) {
fputs(\"Error: numero no valido.\\n\", stderr);
return -1;
}
int i = 1;
while (numero%2 == 0) {
printf (\"%.3d| %d/2 = %d.\\n\", i++, numero, numero /= 2);
}
printf (\"No se puede seguir dividiendo: El numero %d es impar.\\n\", numero);
return 0;