Qual è l'ultima versione del linguaggio di programmazione C?
Nel 1978, Brian Kernighan e Dennis Ritchie pubblicarono la prima edizione di The C Programming Language. Questo libro, noto ai programmatori C come "K&R", è servito per molti anni come una specifica informale del linguaggio. La versione del C che descrive è comunemente indicata come K&R C. La seconda edizione del libro copre il successivo standard ANSI C, descritto di seguito.
K&R ha introdotto diverse caratteristiche del linguaggio:
- Biblioteca I/O standard
- tipo di dati long int
- tipo di datiunsigned int
- Gli operatori di assegnazione composti della forma =op (come =-) furono cambiati nella forma op= (cioè -=) per rimuovere l'ambiguità semantica creata da costrutti come i=-10, che erano stati interpretati come i =- 10 (decrementa iby 10) invece del possibile inteso i = -10 (lascia che i sia -10).
Negli anni successivi alla pubblicazione del K&R C, furono aggiunte diverse caratteristiche al linguaggio, supportate dai compilatori della AT&T e da alcuni altri fornitori. Queste includevano:
- funzioni senza ritorno (cioè, funzioni senza valore di ritorno)
- funzioni che restituiscono struct o uniontypes (piuttosto che puntatori)
- assegnazione per tipi di dati struct
- tipi enumerati
C89
Nel 1983, l'American National Standards Institute formò un comitato, X3J11, per stabilire una specifica standard del C. Lo standard fu completato nel 1989 e ratificato come ANSI X3.159-1989 "Programming Language C." Questa versione del linguaggio è spesso indicata come "ANSI C". Più tardi a volte viene usata l'etichetta "C89" per distinguerlo dal C99 ma usando lo stesso metodo di etichettatura.
C90
Lo stesso standard del C89 fu ratificato dall'Organizzazione Internazionale per la Standardizzazione come ISO/IEC 9899:1990, con solo cambiamenti di formattazione, a cui ci si riferisce talvolta come C90. Pertanto, i termini "C89" e "C90" si riferiscono essenzialmente allo stesso linguaggio.
C95
Nel 1995, l'ISO ha pubblicato un'estensione, chiamata Amendment 1, per lo standard ANSI-C. Il suo nome completo alla fine era ISO/IEC 9899/AMD1:1995 o soprannominato C95. A parte la correzione degli errori ci furono ulteriori cambiamenti alle capacità del linguaggio, come:
- Miglioramento del supporto ai caratteri multibyte e larghi nella libreria standard, introducendo e così come l'I/O multi-byte
- Aggiungimento dei digrafi al linguaggio
- Specificazione di macro standard per la specificazione alternativa degli operatori, ad es. e per &&
- Specificazione della macro standard __STDC_VERSION__ con valore 199409L
In aggiunta all'emendamento, due rettifiche tecniche sono state pubblicate da ISO per C90:
- ISO/IEC 9899 TCOR1 in 1995
- ISO/IEC 9899 TCOR2 in 1996
Preprocessor Test for C95 compatibility
- #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L
- /* C95 compatible source code. */
- #elif defined(__ANSI__)
- /* C89 compatible source code. */
- #endif
C99
In March 2000, ANSI adopted the ISO/IEC 9899:1999 standard. Questo standard è comunemente chiamato C99.
Alcune aggiunte degne di nota allo standard precedente includono:
- Nuovi tipi di dati incorporati: long long, _Bool, _Complex, e _Imaginary
- Diverse nuove caratteristiche di base del linguaggio, inclusi indici statici di array, inizializzatori designati, letterali composti, array di lunghezza variabile, membri di array flessibili, macro variabili, e la parola chiave restrict
- Diversi nuovi header di libreria, inclusi stdint.h, , fenv.h,
- Migliorata la compatibilità con diverse caratteristiche del C++, incluse le funzioni in linea, i commenti a linea singola, la mescolanza di dichiarazioni e codice, i nomi di caratteri universali negli identificatori
- Rimosse diverse pericolose caratteristiche del linguaggio C89 come le dichiarazioni di funzioni implicite e gli int impliciti
Tre correzioni tecniche sono state pubblicate da ISO per C99:
- ISO/IEC 9899:1999/Cor.1:2001(E)
- ISO/IEC 9899:1999/Cor.2:2004(E)
- ISO/IEC 9899:1999/Cor.3:2007(E)
A standard macro __STDC_VERSION__ is defined with value 199901L to indicate that C99 support is available.
C11
In 2007, work began on another revision of the C standard, informally called "C1X" until its official publication on 2011-12-15. The C standards committee adopted guidelines to limit the adoption of new features that had not been tested by existing implementations.
The C11 standard adds numerous new features to C and the library
- Including type generic macros
- Anonymous structures
- Improved Unicode support
- Atomic operations
- Multi-threading
- Bounds-checked functions.
It also makes some portions of the existing C99 library optional, and improves compatibility with C++.
The standard macro __STDC_VERSION__ is defined as 201112L to indicate that C11 support is available.
Articoli simili
- Qual è la differenza tra linguaggio macchina, linguaggio assembly e linguaggio di alto livello nei computer?
- Posso usare un Samsung S4 nel 2021? Perché non prende l'ultima versione di Android e rimane nella versione 5.0.1 (Lollipop)?
- Il linguaggio assembly è considerato un linguaggio di programmazione funzionale?
- In quale linguaggio di programmazione è codificato Netflix? Come si usa questo linguaggio?