ANSI C

De Viquipèdia
Salta a la navegació Salta a la cerca

ANSI C és un estàndard tècnic publicat per l'Institut Nacional Nord-americà d'Estàndards (ANSI), per al llenguatge de programació C. Es recomana als desenvolupadors de programari en C que compleixin amb els requisits descrits en el document per facilitar així la portabilitat del codi.

Història d'ANSI C i ISO C[modifica]

El primer estàndard que es va publicar per VV va ser el d'ANSI, si bé aquest estàndard va ser adoptat posteriorment per la International Organization for Standardization (ISO) i revisions posteriors publicades per ISO han estat adoptades per ANSI. El terme ANSI C s'empra més sovint en la indústria que ISO C. Un terme més neutral és estàndard C.

C89[modifica]

El 1983, el American National Standards Institute creó un comité, el X3J11, para establecer una especificación estándar para C. Tras un largo y arduo proceso, el estándar se terminó el 1989 i revisions posteriors publicades per ISO han estat adoptades per ANSI. El terme ANSI C és d'ús més freqüent en la indústria que ISO C. Un terme més neutral és estàndard C.

C90[modifica]

El 1990, l'estàndard ANSI C (amb algunes modificacions menors) va ser adoptat per la International Organization for Standardization sota la denominació ISO / IEC 9899: 1990. Aquesta versió es coneix com a C90, si bé "C89" i "C90" són, a efectes pràctics, el mateix llenguatge de programació.

C99[modifica]

El març de 2000, ANSI va adoptar l'estàndard ISO / IEC 9899: 1999. A aquest estàndard se li coneix com a C99.

C11[modifica]

"C11"és el nou estàndard per al llenguatge de programació C.

Compatibilitat amb alguns compiladors importants[modifica]

ANSI C és compatible per gairebé tots els compilador és, atès que la gran part del codi escrit en C està basat en ANSI C. Es dóna per fet que qualsevol programa escrit només segons l'estàndard C sense dependència alguna de hardware se compilación|compila de una forma correcta en qualsevol plataforma amb una implementació d'acord amb C. Si no es prenen aquestes mesures, la majoria de programes només podran compilar-se en una plataforma determinada o amb un compilador en particular. Per exemple, per utilitzarbiblioteques no estàndard, com ara biblioteques Graphical user interfície | GUI, o per confiar en atributs específics del compilador o d'una plataforma, com ara la mida exacte de determinats tipus de dades i endianness de bytes.

Com detectar la compatibilitat[modifica]

Per minimitzar les diferències entre C K&R i l'estàndard ANSI C, pot utilitzarse __STDC__, el macro ("estándar c") per dividir el codi entre seccions ANSI y K&R.

 #if __STDC__
 extern int getopt(int, char * const *, const char *);
 #else
 extern int getopt();
 #endif

És preferible utilitzar "#if __STDC__" com en l'exemple superior en lloc de "#ifdef __STDC__" perquè algunes implementacions poden atorgar a __STDC__ el valor zero per indicar que no són compatibles amb ANSI. "#if" s'encarregarà de substituir per zero (0) tots aquells identificadors que no van poder ser substituïts per un macro. D'aquesta manera encara que el macro __STDC__ no està definit "#if" funcionará.

En l'exemple de dalt s'ha utilitzat un prototip en la declaració d'una funció per implementacions compatibles amb ANSI, mentre que una declaració obsoleta -que no és cap prototipo- s'usa de manera diferent. Encara que són compatibles amb C99 i C90, no es recomana el seu ús.

Compiladors compatibles amb ANSI C[modifica]

  • GCC
  • Visual C++|Microsoft Visual C++ (C90. Algunes característiques de C99) (MSVC no és compatible amb C99[1])
  • ARM RealView

Referències[modifica]

Enllaços externs[modifica]