Qual é a última versão da linguagem de programação C?
Em 1978, Brian Kernighan e Dennis Ritchie publicaram a primeira edição da linguagem de programação em C. Este livro, conhecido pelos programadores em C como "K&R", serviu durante muitos anos como uma especificação informal da linguagem. A versão do C que ele descreve é comumente chamada de K&R C. A segunda edição do livro cobre o padrão ANSI C mais recente, descrito abaixo.
K&R introduziu várias características da linguagem:
- Biblioteca padrão de E/S>li> tipo de dado int longo>li> tipo de dado int não assinado>li> Operadores de atribuição de dados compostos do formulário =op (como =-) foram alterados para o formulário op= (isto é, -=) para remover a ambiguidade semântica criada por construções como i=-10, que tinham sido interpretadas como i =- 10 (decremento iby 10) em vez da possivelmente pretendida i = -10 (let i be -10).
Nos anos seguintes à publicação do K&R C, várias funcionalidades foram adicionadas à linguagem, suportadas por compiladores da AT&T e alguns outros fornecedores. Estas incluíram:
- funçõesvoid (ou seja funções sem valor de retorno)>li>funções retornando estrutura ou tipos de união (ao invés de ponteiros)li>li> atribuição para tipos de dados estruturadosli>li> tipos numerados>p>C89
Em 1983, o American National Standards Institute formou um comitê, X3J11, para estabelecer uma especificação padrão de C. A norma foi concluída em 1989 e ratificada como ANSI X3.159-1989 "Linguagem de Programação C". Esta versão da linguagem é frequentemente referida como "ANSI C". Mais tarde, às vezes a etiqueta "C89" é usada para distingui-la de C99 mas usando o mesmo método de etiquetagem.
C90
O mesmo padrão de C89 foi ratificado pela Organização Internacional de Normalização como ISO/IEC 9899:1990, com apenas alterações de formatação, que às vezes é referida como C90. Portanto, os termos "C89" e "C90" referem-se essencialmente à mesma linguagem.
C95
Em 1995, a ISO publicou uma extensão, chamada Emenda 1, para a norma ANSI-C. Seu nome completo finalmente foi ISO/IEC 9899/AMD1:1995 ou apelidado C95. Além da correção de erros, houve outras mudanças nas capacidades da linguagem, tais como:
- Improved multi-byte and wide charactersupport in the standard library, introduzindo e assim como multi-byte I/O
- Adição de digraphs à linguagem
- Especificação de macros padrão para a especificação alternativa de operadores, por exemplo e para &&&>li>Especificação da macro padrão __STDC_VERSION__ com valor 199409L
- 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. Este padrão é comumente referido como C99.
algumas adições notáveis ao padrão anterior incluem:
- Novos tipos de dados incorporados: longo comprimento, _Bool, _Complex, e _Imaginary>li>Novos recursos de linguagem do núcleo, incluindo índices de array estático, inicializadores designados, literais compostos, matrizes de comprimento variável, membros de array flexível, macros variádicas, e palavra-chave restritali>Novos cabeçalhos de biblioteca do núcleo, incluindo stdint.h, , fenv.h,
- Improved compatibility with several C++ features, including inline functions, single-line comments, mixing declarations and code, universal character names in identifiers>li>Remover várias características perigosas da linguagem C89, tais como declarações de funções implícitas e int>ul>p>Três correções técnicas foram publicadas pela ISO para C99:>ul>>li>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.
Artigos semelhantes
- Qual é a diferença entre linguagem de máquina, linguagem de montagem e linguagem de alto nível em computadores?
- Posso usar um Samsung S4 em 2021? Porque não pega na última versão do Android e fica na versão 5.0.1 (Lollipop)?
- Quais são as vantagens de uma linguagem de montagem na programação sobre uma linguagem de máquina?
- A linguagem Assembly é considerada uma linguagem de programação funcional?