Usuari:Rmonleoniglesias/proves
ANSI C és un Estàndard tècnic publicat pel Institut Nacional Nord-americà d'Estàndards (ANSI), per al llenguatge de programació C. Es recomana als desarrolladores de software 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) y revisiones posteriores publicadas por ISO han sido adoptadas por ANSI. El término ANSI C es de uso más frecuente en la industria que ISO C. Un término más neutral es estándar C.
C89
[modifica]En 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ó en 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. A aquesta versió se li coneix com C90, si bé "C89" i "C90" són, a efectes pràctics, el mateix llenguatge de programació.
C99
[modifica]Al març de 2000, ANSI va adoptar l'estàndard ISO / IEC 9899: 1999. A aquest estàndard se li coneix com 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 utilitzar biblioteques 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 forma 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]- ISO C working group
- Draft ANSI C Standard (ANSI X3J11/88-090) (May 13, 1988), Third Public Review
- Draft ANSI C Rationale (ANSI X3J11/88-151) (Nov 18, 1988)
- Object oriented programming with ANSI-C. Hanser, Hanser.
- Error: hi ha títol o url, però calen tots dos paràmetres.«». Arxivat de l'original el 25 de julio de 2011. [Consulta: 18 juny 2010].
- «ANSI Standards Action Vol. 36, #48», 2 diciembre 2005. Arxivat de l'original el 4 de marzo de 2016.
![]() ![]() ![]() | Error: Plantilla utilitzada incorrectament. Vegeu Plantilla:Traduït de. |