C11
llenguatge de programació From Wikipedia, the free encyclopedia
Remove ads
C11 (anteriorment C1X) és un nom informal per a ISO/IEC 9899:2011,[1] un estàndard passat per al llenguatge de programació C. Va substituir C99 (estàndard ISO/IEC 9899:1999) i ha estat substituït per C17 (estàndard ISO/IEC 9899:2018). C11 estandarditza principalment les funcions que ja són compatibles amb els compiladors contemporanis comuns i inclou un model de memòria detallat per donar suport millor a múltiples fils d'execució. A causa del retard en la disponibilitat de les implementacions C99 conformes, C11 fa que certes característiques siguin opcionals, per facilitar el compliment de l'estàndard d'idioma bàsic.[2]
L'esborrany final, N1570, es va publicar l'abril de 2011. La nova norma va aprovar la seva revisió de l'esborrany final el 10 d'octubre de 2011 i va ser ratificada oficialment per ISO i publicada com a ISO/IEC 9899:2011 el 8 de desembre de 2011, sense cap comentari que requeria resolució per part dels organismes nacionals participants.
Es defineix una macro estàndard __STDC_VERSION__ amb el valor 201112L per indicar que el suport C11 està disponible.[3]
Remove ads
Canvis de C99
L'estàndard inclou diversos canvis al llenguatge C99 i a les especificacions de la biblioteca, com ara
- Especificació d'alineació (especificador
_Alignas, operador_Alignof, funcióaligned_alloc,< stdalign.h >capçalera) - L'especificador de la funció
_Noreturni la capçalera< stdnoreturn.h > - Expressions de tipus genèric amb la paraula clau
_Generic. Per exemple, la macro següentcbrt(x)es tradueix acbrtl(x),cbrt(x)ocbrtf(x)segons el tipus dex:
#define cbrt(x) _Generic((x), long double: cbrtl, \
default: cbrt, \
float: cbrtf)(x)
- Suport multiprocés (especificador de classe d'emmagatzematge
_Thread_local, capçalera< threads.h >que inclou funcions de creació/gestió de fils, mutex, variable de condició i funcionalitat d'emmagatzematge específica del fil, així com< stdatomic.h >per a operacions atòmiques compatibles el model de memòria C11). - Suport Unicode millorat basat en l'informe tècnic C Unicode ISO/IEC TR 19769:2004 (tipus
char16_tichar32_tper emmagatzemar dades codificades UTF-16 / UTF-32, incloses les funcions de conversió a< uchar.h >i la cadenauiUcorresponent prefixos literals, així com el prefixu8per a literals codificats UTF-8). - Eliminació de la funció
gets(a favor defgetsmés segurs ), que estava obsoleta a la revisió de l'estàndard del llenguatge C anterior, ISO/IEC 9899:1999/Cor.3:2007(E). - Interfícies de comprovació de límits (annex K).
- Característiques d'analització (annex L).
- Més macros per consultar les característiques dels tipus de coma flotant, pel que fa als números subnormals de coma flotant i el nombre de dígits decimals que el tipus és capaç d'emmagatzemar.
- Estructures i unions anònimes, útils quan les unions i les estructures estan imbricades, p. ex. in
struct T { int tag; union { float x; int n; }; };. - Assercions estàtiques, que s'avaluen durant la traducció en una fase posterior que
#ifi#error, quan el traductor entén els tipus. - Un mode exclusiu de creació i obertura (sufix
"…x") per afopen. Això es comporta comO_CREAT|O_EXCLa POSIX, que s'utilitza habitualment per als fitxers de bloqueig. - La funció
quick_exitcom a tercera manera d'acabar un programa, destinada a fer almenys una desinicialització mínima. - Una nova funció
timespec_geti l'estructura corresponent a< time.h >amb un grau de compatibilitat POSIX. - Macros per a la construcció de valors complexos (en part perquè
real + imaginary*Ipodria no donar el valor esperat siimaginaryés infinit o NaN).
Remove ads
Suport del compilador
Algunes característiques de C11 són compatibles amb el GCC a partir de la versió 4.6,[4] Clang a partir de la versió 3.1,[5] IBM XL C a partir de la versió 12.1,[6] i Microsoft Visual C++ a partir de VS 2019 (16.8)[7] al setembre de 2020.
Referències
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads