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.
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.
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.
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ó.
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"és el nou estàndard per al llenguatge de programació C.
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 dona per fet que qualsevol programa escrit només segons l'estàndard C sense dependència alguna de maquinari es compila d'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.
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.
![]() ![]() ![]() | Error: Plantilla utilitzada incorrectament. Vegeu Plantilla:Traduït de. |