Estándar del lenguaje de programación C, revisión futura
C23 es un borrador de estándar abierto para el lenguaje de programación C , que se espera que se convierta en ISO/IEC 9899:2024, reemplazando a C17 (estándar ISO/IEC 9899:2018). [1] Se inició en 2016 de manera informal como C2x, [2] y se espera que se publique en octubre de 2024. [3] El borrador de trabajo de C23 más reciente disponible públicamente se publicó el 1 de abril de 2023. [4] La primera reunión del WG14 para el borrador de C2x se llevó a cabo en octubre de 2019, [5] se llevaron a cabo reuniones remotas virtuales en 2020 debido a la pandemia de COVID-19 , luego varias reuniones por teleconferencia continuaron ocurriendo hasta 2024.
En C23, el valor de __STDC_VERSION__ cambia de 201710L a 202311L. Los nombres comunes "C17" y "C23" reflejan estos valores, que se congelan antes de la adopción final, en lugar de los años en los identificadores de las normas ISO (9899:2018 y 9899:2024).
Características
A continuación se enumeran los cambios integrados en el último borrador de trabajo del C23. [4]
Biblioteca estándar
Nuevas funciones
- Añade
memset_explicit()
una función para borrar datos confidenciales, donde el almacenamiento en memoria siempre debe realizarse independientemente de las optimizaciones. [6]<string.h>
- Agregue
memccpy()
una función <string.h>
para concatenar cadenas de manera eficiente, similar a las extensiones C POSIX y SVID . [7] - Agregue funciones
strdup()
y para asignar una copia de una cadena, similar a las extensiones C POSIX y SVID . [8]strndup()
<string.h>
- Añade
memalignment()
una función para determinar la alineación de bytes de un puntero. [9]<stdlib.h>
- Agregue funciones de utilidad de bits/macros/tipos en un nuevo encabezado
<stdbit.h>
para examinar muchos tipos de enteros. Todos comienzan con stdc_
para minimizar los conflictos con el código heredado y las bibliotecas de terceros. [10]- En lo que sigue, reemplace
*
con uc
, us
, ui
, ul
, ull
para cinco nombres de funciones, o en blanco para una macro de tipo genérico. [10] - Agregue
stdc_count_ones*()
y stdc_count_zeros*()
cuente el número de bits 1 o 0 en valor. [10] - Agregue
stdc_leading_ones*()
y stdc_leading_zeros*()
cuente los bits 1 o 0 iniciales en el valor. [10] - Agregue
stdc_trailing_ones*()
y stdc_trailing_zeros*()
cuente los bits 1 o 0 finales del valor. [10] - Agregue
stdc_first_leading_one*()
y stdc_first_leading_zero*()
para encontrar el primer bit principal con valor 1 o 0. [10] - Agregue
stdc_first_trailing_one*()
y stdc_first_trailing_zero*()
para encontrar el primer bit final con valor 1 o 0. [10] - Agregue
stdc_has_single_bit*()
para determinar si el valor es una potencia exacta de 2 (devuelve verdadero si y solo si hay un solo bit 1). [10] - Sumar
stdc_bit_floor*()
para determinar la mayor potencia integral de 2 que no sea mayor que el valor . [10] - Suma
stdc_bit_ceil*()
para determinar la potencia integral más pequeña de 2 que no sea menor que el valor . [10] - Agregue
stdc_bit_width*()
para determinar el número de bits para representar un valor. [10]
- Agregue
timegm()
una función para convertir la estructura de tiempo en un valor de tiempo de calendario, similar a la función en las bibliotecas glibc y musl . [11]<time.h>
- Nuevas funciones basadas en las recomendaciones IEEE 754-2019, como funciones trigonométricas que operan en unidades de y . [12]
<math.h>
exp10
Funciones existentes
- Añadir
%b
especificador de conversión binaria a printf()
la familia de funciones. [13] - Añadir
%b
especificador de conversión binaria a scanf()
la familia de funciones. [13] - Soporte para agregar
0b
y convertir binario a familias de funciones. [13]0B
strtol()
wcstol()
- Haga que las funciones
bsearch()
, bsearch_s()
, memchr()
, strchr()
, strpbrk()
, strrchr()
, strstr()
, y sus contrapartes amplias wmemchr()
, wcschr()
, wcspbrk()
, wcsrchr()
, wcsstr()
devuelvan un objeto calificado const si se les pasó uno. [14]
Preprocesador
- Agregue las directivas
#elifdef
y , [15] que son esencialmente equivalentes a y . Ambas directivas se agregaron al estándar C++23 y GCC 12. [16]#elifndef
#elif defined
#elif !defined
- Agregar
#embed
directiva para la inclusión de recursos binarios y __has_embed
permitir que la disponibilidad de un recurso sea verificada por directivas del preprocesador. [17] - Añadir
#warning
directiva para diagnósticos. [18] - Añade
__has_include
la posibilidad de que las directivas del preprocesador comprueben la disponibilidad de un encabezado. [19] - Agregar
__has_c_attribute
la posibilidad de que las directivas del preprocesador verifiquen la disponibilidad de un atributo. [20] (consulte el grupo " Compatibilidad con C++ " para obtener información sobre la nueva característica de atributo) - Agregar
__VA_OPT__
macro funcional para macros variádicas que se expande a su argumento solo si se ha pasado un argumento variádico a la macro que lo contiene. [21]
Tipos
- Agregue
nullptr_t
, un tipo de puntero nulo . [22] - Agregue tipos y para números enteros con precisión de bits. Agregue una macro para el ancho de bits máximo. [23] [24]
_BitInt(N)
unsigned _BitInt(N)
BITINT_MAXWIDTH
- Agregue macros
ckd_add()
, ckd_sub()
, ckd_mul()
para operaciones con números enteros comprobados. [25] - Los tipos modificados de forma variable (pero no los VLA , que son variables automáticas asignadas en la pila) se convierten en una característica obligatoria. [26]
- Mejor soporte para el uso
const
con matrices. [27] - Estandarización del
typeof(...)
operador. [28] - El significado de la
auto
palabra clave se modificó para provocar una inferencia de tipo y, al mismo tiempo, conservar su antiguo significado de especificador de clase de almacenamiento si se utiliza junto con un tipo. A diferencia de C++ , C23 permite la inferencia de tipo solo para definiciones de objetos (no se infiere el tipo de retorno de función ni el tipo de parámetro de función). [29] - Se cambiaron las reglas de compatibilidad para estructuras, uniones y tipos enumerados para permitir una redeclaración de un tipo compatible con la misma etiqueta. [30]
- Los números enteros de ancho exacto ahora pueden superar
intmax_t
(N2888). [31]
Constantes
- Agregar
nullptr
constante para nullptr_t
el tipo. [22] - Agregue sufijos literales enteros
wb
y enteros para los tipos y , [32] como produce un , y produce un que tiene tres bits de valor y un bit de signo.uwb
_BitInt(N)
unsigned _BitInt(N)
6uwb
unsigned _BitInt(3)
-6wb
signed _BitInt(4)
- Agregue prefijos constantes literales binarios
0b
, [33] como (que equivale a 0xAA).0B
0b10101010
- Agrega
'
un separador de dígitos a las constantes literales, [34] como 0xFE'DC'BA'98
(equivale a 0xFEDCBA98), 299'792'458
(equivale a 299792458 ), 1.414'213'562
(equivale a 1.414213562 ). - Añade la capacidad de especificar el tipo subyacente de un
enum
. [35] - Permite que
enum
los s sin un tipo subyacente fijo almacenen valores que no se puedan representar mediante int
. [36]
Palabras clave
- Añadir palabras
true
clave false
. [37] - Agregue las palabras clave
alignas
, alignof
, bool
, static_assert
, thread_local
. Las palabras clave definidas previamente se convierten en ortografías alternativas: _Alignas
, _Alignof
, _Bool
, _Static_assert
, _Thread_local
. [38] - Agregar
_BitInt
palabra clave (ver grupo "tipos") - Agregar palabras
typeof
clave typeof_unqual
(ver grupo "tipos") - Agregar
nullptr
palabra clave (ver grupo "constantes") - Agregar
constexpr
palabra clave (ver grupo "otros") - Agregue palabras clave
_Decimal32
, _Decimal64
, para aritmética de punto flotante decimal_Decimal128
(opcional) (ver grupo "otros")
Sintaxis
- Las etiquetas pueden aparecer antes de las declaraciones y al final de las declaraciones compuestas . [39]
- Parámetros sin nombre en definiciones de funciones. [40]
- Inicialización cero con
{}
(incluida la inicialización de VLA). [41] - Las funciones variádicas ya no necesitan un argumento nombrado antes de los puntos suspensivos y la
va_start
macro ya no necesita un segundo argumento ni evalúa ningún argumento después del primero si está presente. [42] - Agregue la sintaxis de atributos de estilo C++11 [43] usando corchetes dobles . Además de los atributos C++11 que se enumeran a continuación, agregue nuevos atributos:
[[]]
[[unsequenced]]
[44] permite optimizaciones del compilador para funciones que producen salidas repetibles solo en función de sus parámetros.[[reproducible]]
, [44] similar a [[unsequenced]]
, pero para funciones cuyo orden de llamada también importa
- Añadir un solo argumento
_Static_assert
para compatibilidad con C++17 . [45] - Las funciones que no tienen argumentos enumerados en el prototipo
void foo()
se entienden como si no tuvieran argumentos (consulte la eliminación de las declaraciones de funciones de K&R)
Compatibilidad con C++
- Varios cambios de sintaxis mejoran la compatibilidad con C++, como etiquetas antes de declaraciones, argumentos de funciones sin nombre, inicialización cero con
{}
, funciones variádicas sin argumentos nombrados, atributos de estilo C++11_Static_assert
(consulte Sintaxis). Para las etiquetas al final de declaraciones compuestas se realizó un cambio correspondiente en C++23 . [46] - Agregue atributos de estilo C++ (consulte Sintaxis). Agregue los atributos [47] , [48] , [49] , [50] , [51] y el atributo para compatibilidad con C++11 , luego desapruebe las características de encabezado , , introducidas en C11 . [52] Se permiten atributos duplicados para compatibilidad con C++23 . [53] Todos los atributos estándar también pueden estar rodeados por guiones bajos dobles (por ejemplo, es equivalente a ).
[[deprecated]]
[[fallthrough]]
[[maybe_unused]]
[[nodiscard]]
[[noreturn]]
_Noreturn
noreturn
<stdnoreturn.h>
[[__deprecated__]]
[[deprecated]]
- Agregar
u8
prefijo para literales de caracteres para representar codificación UTF-8 para compatibilidad con C++17 . [54] [55] - Agregar directivas de
#elifdef
preprocesamiento #elifndef
para compatibilidad con C++23 . [15] (ver grupo "preprocesador")
Otras características
- Compatibilidad con la norma ISO/IEC 60559:2020, la versión actual del estándar IEEE 754 para aritmética de punto flotante, con aritmética de punto flotante binaria extendida y aritmética de punto flotante decimal (opcional). [56] [57]
- El
constexpr
especificador para objetos pero no para funciones, a diferencia del equivalente de C++ . [58] - Añade
char8_t
un tipo para almacenar datos codificados en UTF-8 y cambia el tipo de constantes de caracteres u8 y literales de cadena a char8_t
. Además, las funciones mbrtoc8()
y c8rtomb()
convierten un carácter multibyte angosto a codificación UTF-8 y un único punto de código de UTF-8 a una representación de carácter multibyte angosto respectivamente. [59] - Aclarar que todas
char16_t
las cadenas y literales deben estar codificados en UTF-16 , y todas char32_t
las cadenas y literales deben estar codificados en UTF-32 , a menos que se especifique explícitamente lo contrario. [60] - Permitir que los especificadores de clase de almacenamiento aparezcan en la definición literal compuesta. [61]
Funciones obsoletas
Algunas características antiguas obsoletas se eliminaron o quedaron obsoletas del borrador de trabajo de C23:
- Eliminar trígrafos . [62]
- Eliminar las definiciones/declaraciones de funciones K&R (sin información sobre los argumentos de la función). [63] [64]
- Eliminar representaciones de números enteros con signo que no sean complemento a dos. Se requerirá la representación de números enteros con signo en complemento a dos . [65]
- Las macros son características obsoletas. [66]
*_HAS_SUBNORM
<float.h>
Compatibilidad con compiladores
Los siguientes compiladores implementan un indicador de compilador experimental para admitir este estándar:
Véase también
Referencias
- ^ "Historia de C". cppreference.com . 2022-06-27. Archivado desde el original el 19 de octubre de 2022.
- ^ "WG14-N2086: Carta C2x". open-std.org . 20 de septiembre de 2016. Archivado desde el original el 22 de diciembre de 2022.
- ^ El 30 de agosto de 2024, la norma alcanzó la etapa de desarrollo ISO "50.20 Prueba enviada a la secretaría o votación FDIS iniciada: 8 semanas" y, a partir del 19 de septiembre, ISO la incluye como "Fecha de publicación: 2024-10". "ISO/IEC PRF 9899". iso.org . Archivado desde el original el 19 de septiembre de 2024.
- ^ ab "WG14-N3096: Borrador para ISO/IEC 9899:2024" (PDF) . open-std.org . 1 de abril de 2023. Archivado (PDF) del original el 2 de abril de 2023.
- ^ "WG14-N2437: Agenda para octubre de 2019". open-std.org . 2019-10-21. Archivado desde el original el 5 de marzo de 2021.
- ^ "WG14-N2897: memset_explicit()". open-std.org . 2021-12-27. Archivado desde el original el 25 de octubre de 2022.
- ^ "WG14-N2349: Hacia una copia y concatenación de cadenas más eficiente". open-std.org . 2019-03-18. Archivado desde el original el 30 de septiembre de 2022.
- ^ "WG14-N2353: strdup() y strndup()". open-std.org . 2019-03-18. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N2974: Alineación de punteros consultables" (PDF) . open-std.org . 2022-04-15. Archivado (PDF) del original el 13 de octubre de 2022.
- ^ abcdefghijk "WG14-N3022: Utilidades de bits modernas". open-std.org . 2022-07-06. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N2833: Agregar timegm() como parte no opcional de time.h". open-std.org . 2021-10-07. Archivado desde el original el 1 de diciembre de 2021.
- ^ Véase N3096 § B.11 para obtener una descripción general útil. Las funciones se agregaron en documentos separados: N2488, sus versiones actualizadas y sus referencias.
- ^ abc "WG14-N2630: entrada/salida formateada de números enteros binarios" (PDF) . open-std.org . 2021-01-01. Archivado (PDF) del original el 14 de diciembre de 2022.
- ^ "WG14-N3020: Funciones de la biblioteca estándar que preservan calificadores" (PDF) . open-std.org . 2022-06-13. Archivado (PDF) del original el 13 de octubre de 2022.
- ^ ab "WG14-N2645: Agregar compatibilidad con las directivas de preprocesamiento #elifdef y #elifndef" (PDF) . open-std.org . 2020-01-25. Archivado (PDF) del original el 28 de noviembre de 2022.
- ^ "GCC 12 agrega soporte para las nuevas directivas #elifdef #elifndef". phoronix . 12 de mayo de 2021. Archivado desde el original el 27 de diciembre de 2022.
- ^ "WG14-N3017: #embed - un mecanismo de inclusión de recursos binarios escaneable y fácil de usar". open-std.org . 2022-06-27. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N2686: #advertencia" (PDF) . open-std.org . 2022-07-22. Archivado (PDF) del original el 28 de noviembre de 2022.
- ^ "WG14-N2799: __has_include para C" (PDF) . open-std.org . 2021-08-30. Archivado (PDF) del original el 24 de diciembre de 2022.
- ^ "WG14-N2553: Consulta de compatibilidad de atributos" (PDF) . open-std.org . 2020-08-04. Archivado (PDF) del original el 14 de octubre de 2022.
- ^ "WG14-N3033: Omisión y eliminación de comas". open-std.org . 20 de julio de 2022. Archivado desde el original el 27 de diciembre de 2022.
- ^ ab "WR14-N3042: Introducir la constante nullptr". open-std.org . 2022-07-22. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N2763: Adición de un tipo fundamental para números enteros de N bits" (PDF) . open-std.org . 2021-06-21. Archivado (PDF) del original el 27 de diciembre de 2022.
- ^ "WG14-N3035: Correcciones de errores _BitInt" (PDF) . open-std.org . 2022-07-21. Archivado (PDF) del original el 13 de octubre de 2022.
- ^ "WG14-N2867: Verificación de números enteros de n bits" (PDF) . open-std.org . 2021-11-28. Archivado (PDF) del original el 14 de diciembre de 2022.
- ^ "WG14-N2778: Tipos modificados de forma variable" (PDF) . open-std.org . 2021-07-11. Archivado (PDF) del original el 22 de diciembre de 2022.
- ^ "WG14-N2607: Compatibilidad de punteros a matrices con calificadores" (PDF) . open-std.org . 2020-10-31. Archivado (PDF) del original el 13 de octubre de 2022.
- ^ "WG14-N2899: No tan mágico: typeof para C". open-std.org . 2022-01-21. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N3007: Inferencia de tipos para definiciones de objetos". open-std.org . 2022-06-10. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N3037: Reglas mejoradas para la compatibilidad de etiquetas (actualiza N3032)" (PDF) .
- ^ "C23 ha terminado: esto es lo que hay en el menú". El Pasto . 31 de julio de 2022.
- ^ "WG14-N2775: Sufijos literales para números enteros con precisión de bits" (PDF) . open-std.org . 2021-07-13. Archivado (PDF) del original el 27 de diciembre de 2022.
- ^ "WG14-N2549: Permitir constantes enteras binarias" (PDF) . open-std.org . 2020-07-30. Archivado (PDF) del original el 22 de diciembre de 2022.
- ^ "WG14-N2626: Separadores de dígitos" (PDF) . open-std.org . 2020-12-15. Archivado (PDF) del original el 19 de diciembre de 2022.
- ^ "WG14-N3030: Mejoras en las enumeraciones". open-std.org . 2022-07-19. Archivado desde el original el 26 de noviembre de 2022.
- ^ "WG14-N3029: Enumeraciones normales mejoradas". open-std.org . 19 de julio de 2022. Archivado desde el original el 29 de enero de 2023.
- ^ "WG14-N2935: Convertir lo falso y lo verdadero en características lingüísticas de primera clase" (PDF) . open-std.org . 2022-02-15. Archivado (PDF) del original el 21 de noviembre de 2022.
- ^ "WG14-N2934: Revisar la ortografía de las palabras clave" (PDF) . open-std.org . 2022-02-15. Archivado (PDF) del original el 24 de diciembre de 2022.
- ^ "WG14-N2508: Posicionamiento libre de etiquetas dentro de sentencias compuestas" (PDF) . open-std.org . 28 de marzo de 2020. Archivado (PDF) del original el 27 de diciembre de 2022.
- ^ "WG14-N2510: Permitir parámetros sin nombre en la definición de una función" (PDF) . open-std.org . 2020-04-09. Archivado (PDF) del original el 24 de diciembre de 2022.
- ^ "WG14-N2900: Inicialización consistente, intuitiva y sin advertencias con {}". open-std.org . 2022-01-01. Archivado desde el original el 27 de diciembre de 2022.
- ^ "WG14-N2975: Flexibilizar los requisitos para las listas de parámetros variádicos" (PDF) . open-std.org . 2022-04-15. Archivado (PDF) del original el 28 de noviembre de 2022.
- ^ "WG14-N2335: Atributos en C" (PDF) . open-std.org . 2019-03-09. Archivado (PDF) del original el 26 de octubre de 2022.
- ^ ab "Funciones no secuenciadas". open-std.org . Consultado el 18 de julio de 2024 .
- ^ "WG14-N2265: Armonización de static_assert con C++" (PDF) . open-std.org . 2018-07-06. Archivado (PDF) del original el 28 de marzo de 2023.
- ^ "Etiquetas al final de sentencias compuestas (compatibilidad con C)" (PDF) . 2022-01-13.
- ^ "WG14-N2554: Limpiezas menores de la redacción de atributos" (PDF) . open-std.org . 2020-08-04. Archivado (PDF) del original el 28 de noviembre de 2022.
- ^ "WG14-N2334: El atributo obsoleto" (PDF) . open-std.org . 2019-01-22. Archivado (PDF) del original el 19 de octubre de 2022.
- ^ "WG14-N2408: El atributo fallthrough" (PDF) . open-std.org . 2019-08-11. Archivado (PDF) del original el 25 de diciembre de 2022.
- ^ "WG14-N2270: El atributo maybe_unused" (PDF) . open-std.org . 2018-07-06. Archivado (PDF) del original el 25 de diciembre de 2022.
- ^ "WG14-N2267: El atributo nodiscard" (PDF) . open-std.org . 2018-07-06. Archivado (PDF) del original el 19 de octubre de 2022.
- ^ "WG14-N2764: El atributo noreturn" (PDF) . open-std.org . 2021-06-21. Archivado (PDF) del original el 25 de diciembre de 2022.
- ^ "WG14-N2557: Permitir atributos duplicados" (PDF) . open-std.org . 2020-09-01. Archivado (PDF) del original el 28 de noviembre de 2022.
- ^ "WG14-N2418: Adición del prefijo del carácter u8" (PDF) . open-std.org . 2019-09-02. Archivado (PDF) del original el 13 de enero de 2023.
- ^¿ Cuál es el objetivo de los literales de caracteres UTF-8 propuestos para C++17?; Desbordamiento de pila.
- ^ "WG14-N2341: ISO/IEC TS 18661-2 - Extensiones de punto flotante para C - Parte 2: Aritmética de punto flotante decimal" (PDF) . open-std.org . 26 de febrero de 2019. Archivado (PDF) del original el 21 de noviembre de 2022.
- ^ "WG14-N2601: Anexo X - Tipos de intercambio y extendidos según IEC 60559" (PDF) . open-std.org . 15 de octubre de 2020. Archivado (PDF) del original el 14 de octubre de 2022.
- ^ "WG14-N3018: El especificador constexpr para definiciones de objetos". open-std.org . 2022-07-06. Archivado desde el original el 24 de diciembre de 2022.
- ^ "WG14-N2653: char8_t: Un tipo para caracteres y cadenas UTF-8 (Revisión 1)". open-std.org . 2021-06-04. Archivado desde el original el 27 de mayo de 2023.
- ^ "WG14-N2728: los literales de cadena char16_t y char32_t deben ser UTF-16 y UTF-32". open-std.org . 2021-05-15. Archivado desde el original el 27 de mayo de 2023.
- ^ "WG14-N3038: Introducir especificadores de clase de almacenamiento para literales compuestos". open-std.org . 2022-07-21. Archivado desde el original el 26 de noviembre de 2022.
- ^ "WG14-N2940: ¿Eliminación de trígrafos?" (PDF) . open-std.org . 2022-03-02. Archivado (PDF) del original el 26 de octubre de 2022.
- ^ "WG14-N2432: Propuesta de eliminar la compatibilidad con definiciones de funciones con listas de identificadores" (PDF) . open-std.org . 25 de septiembre de 2019. Archivado (PDF) del original el 27 de diciembre de 2022.
- ^ "WG14-N2841: No hay declaradores de funciones sin prototipos". open-std.org . 2021-10-10. Archivado desde el original el 12 de noviembre de 2022.
- ^ "WG14-N2412: Representación del signo de complemento a dos" (PDF) . open-std.org . 11 de agosto de 2019. Archivado (PDF) del original el 27 de diciembre de 2022.
- ^ "WG14-N2993: Hacer que *_HAS_SUBNORM quede obsoleto". open-std.org . 2022-06-06. Archivado desde el original el 5 de diciembre de 2022.
- ^ "Notas de la versión de GCC 9". Proyecto GNU . Archivado desde el original el 27 de diciembre de 2022.
- ^ "Clang 9.0: se añade un nuevo modo de lenguaje para C2x". Repositorio del proyecto LLVM . 14 de mayo de 2019. Archivado desde el original el 27 de diciembre de 2022.
- ^ "Pelles C - cambios importantes entre las 10.00 y las 11.00". smorgasbordet.com . Archivado desde el original el 27 de diciembre de 2022.
Lectura adicional
- N3096 (borrador de trabajo de la norma C23); WG14; abril de 2023. (descarga gratuita)
- N3149 (borrador de trabajo de la norma C23); WG14; julio de 2023. (no disponible para el público)
- N3219 (borrador de la norma ISO/IEC 9899:2023 DIS); WG14; febrero de 2024. (El borrador de la norma ISO está disponible pero no es gratuito)
- ISO/IEC 9899:2024 (norma oficial C23); ISO ; 2024. (se prevé su lanzamiento en 2024)
Enlaces externos
- Grupo de trabajo 14 del lenguaje C
- Repositorio de documentos del WG14
- Reuniones del GT14: agenda y actas
- Cartas del GT14: Carta C2x, Carta C23, Interpretación de la Carta C23, Carta estándar C