C23 , formalmente ISO/IEC 9899:2024 , es el estándar abierto actual para el lenguaje de programación C , que reemplaza a C17 (estándar ISO/IEC 9899:2018). [ 1 ] Se inició en 2016 informalmente como C2x, [ 2 ] y se publicó el 31 de octubre de 2024. [ 3 ] El borrador disponible libremente más similar al publicado es el documento N3220 [ 4 ] (ver Textos disponibles , más abajo). La primera reunión del WG14 para el borrador C2x se llevó a cabo en octubre de 2019, [ 5 ] se llevaron a cabo reuniones virtuales remotas en 2020 debido a la pandemia de COVID-19 , luego se siguieron realizando varias reuniones por teleconferencia hasta 2024.
GCC tiene soporte para C23 (e incompleto para C2Y). [ 6 ] Clang tiene soporte parcial para C23.
En C23, el valor de __STDC_VERSION__cambia de 201710La 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
Los cambios integrados en el último borrador de trabajo de C23 se enumeran a continuación. [ 7 ]
Constantes
- Agregar
nullptrconstante paranullptr_tel tipo. [ 8 ] - Agregue
'un separador de dígitos a las constantes literales, [ 9 ] como0xFE'DC'BA'98(equivalente a 0xFEDCBA98),299'792'458(equivalente a 299792458 ),1.414'213'562(equivalente a 1.414213562 ). - Agregar prefijos de constantes literales binarios
0b, [ 10 ] como (equivalente a 0xAA), y se agregó previamente en el estándar C++14 . Este cambio es similar a los prefijos establecidos anteriormente y hexadecimales .0B0b101010100x0X - Agregue sufijos literales enteros para
wbtipos y, [ 11 ] tales como produce un , y produce un que tiene tres bits de valor y un bit de signo.uwb_BitInt(N)unsigned_BitInt(N)6uwbunsigned _BitInt(3)-6wbsigned _BitInt(4) - Agregar la capacidad de especificar el tipo subyacente de un
enum. [ 12 ] - Permitir
enumsin un tipo subyacente fijo almacenar valores que no son representables porint. [ 13 ]
Palabras clave
- Agregar
truepalabrasfalseclave. [ 14 ] - Agregue
alignas,alignof,bool,static_assert,thread_localpalabras clave. Las palabras clave definidas previamente se convierten en ortografías alternativas:_Alignas,_Alignof,_Bool,_Static_assert,_Thread_local. [ 15 ] - Agregar
_BitIntpalabra clave (ver grupo "tipos"). - Agregue
typeofpalabrastypeof_unqualclave (consulte el grupo "tipos"). - Agregar
nullptrpalabra clave (ver grupo "constantes"). - Agregar
constexprpalabra clave (ver grupo "otros"). - Agregue las palabras clave
_Decimal32,_Decimal64, para la aritmética de punto flotante decimal_Decimal128(opcional) (consulte el grupo "otros").
Tipos
- Agregar
nullptr_t, un tipo de puntero nulo . [ 8 ] - Agregar tipos para enteros con precisión de bits. Agregar macro para ancho de bits máximo. [ 16 ] [ 17 ]
_BitInt(N)unsigned_BitInt(N)BITINT_MAXWIDTH - Agregar
ckd_add(),ckd_sub(),ckd_mul()macros para operaciones con enteros verificados. [ 18 ] - Los tipos modificados de forma variable (pero no las VLA, que son variables asignadas automáticamente en la pila) se convierten en una característica obligatoria. [ 19 ]
- Mejor soporte para su uso
constcon matrices. [ 20 ] - Estandarización del
typeof(...)operador. [ 21 ] - El significado de la
autopalabra clave se modificó para provocar la inferencia de tipos , conservando al mismo tiempo su significado anterior como especificador de clase de almacenamiento si se utiliza junto con un tipo. A diferencia de C++ , C23 permite la inferencia de tipos solo para definiciones de objetos (no infiere el tipo de retorno de la función ni el tipo de parámetro de la función). [ 22 ] - Se modificaron las reglas de compatibilidad para tipos de estructura, unión y enumerados para permitir la redeclaración de un tipo compatible con la misma etiqueta. [ 23 ]
- Ahora, el entero de ancho exacto puede exceder
intmax_t(N2888). [ 24 ] - Especifique que cuando se defina debe designar el mismo tipo que [ 25 ].
[u]intN_t[u]int_leastN_t
Sintaxis
- Las etiquetas pueden aparecer antes de las declaraciones y al final de las oraciones compuestas . [ 26 ]
- Parámetros sin nombre en las definiciones de funciones. [ 27 ]
- Inicialización cero con
{}(incluida la inicialización de VLA). [ 28 ] - Las funciones variádicas ya no necesitan un argumento con nombre antes de los puntos suspensivos y la
va_startmacro ya no necesita un segundo argumento ni evalúa ningún argumento después del primero si está presente. [ 29 ] - Agregue la sintaxis de atributos al estilo C++11 [ 30 ] usando corchetes dobles . Además de los atributos C++11 que se enumeran a continuación, agregue nuevos atributos:
[[]][[unsequenced]][ 31 ] permite optimizaciones del compilador para funciones que producen salidas repetibles basándose únicamente en sus parámetros.[[reproducible]], [ 31 ] similar a[[unsequenced]], pero para funciones cuyo orden de llamada también importa
- Agregar un único argumento
static_assertpara compatibilidad con C++17 . [ 32 ] - Las funciones sin argumentos listados en el prototipo (por ejemplo,
void foo()) se entienden como si no tomaran argumentos (ver eliminación de las declaraciones de funciones K&R).
Preprocesador
- Se agregaron las directivas
#elifdefy , [ 33 ] que son esencialmente equivalentes a y . Ambas directivas se agregaron al estándar C++23 y a GCC 12. [ 34 ]#elifndef#elif defined#elif !defined - Agregar
#embeddirectiva para la inclusión de recursos binarios y__has_embedpermitir que la disponibilidad de un recurso sea verificada por directivas del preprocesador. [ 35 ] - Agregar
#warningdirectiva para diagnósticos. [ 36 ] - Agregar
__has_includepermitir que las directivas del preprocesador verifiquen la disponibilidad de un encabezado. [ 37 ] - Se añade
__has_c_attributela posibilidad de que las directivas del preprocesador comprueben la disponibilidad de un atributo. [ 38 ] (véase el grupo "Compatibilidad con C++ " para obtener información sobre la nueva función de atributos). - Agregar
__VA_OPT__una macro funcional para macros variádicas que se expanda a su argumento solo si se ha pasado un argumento variádico a la macro contenedora. [ 39 ]
Compatibilidad con C++
- Diversos cambios sintácticos mejoran la compatibilidad con C++, como las etiquetas antes de las declaraciones, los argumentos de función sin nombre, la inicialización a cero con
{}, las funciones variádicas sin argumento con nombre, los atributos de estilo C++11_Static_assert(véase Sintaxis). Para las etiquetas al final de las sentencias compuestas, se realizó un cambio correspondiente en C++23 . [ 40 ] - Agregue atributos de estilo C++ (consulte Sintaxis). Agregue atributos [ 41 ] , [ 42 ] , [ 43 ] , [ 44 ] , [ 45 ] y atributo para compatibilidad con C++11 , luego desapruebe , , características de encabezado introducidas en C11 . [ 46 ] Se permiten atributos duplicados para compatibilidad con C++23 . [ 47 ] Todos los atributos estándar también pueden estar rodeados de guiones bajos dobles (por ejemplo, es equivalente a ).
[[deprecated]][[fallthrough]][[maybe_unused]][[nodiscard]][[noreturn]]_Noreturnnoreturn<stdnoreturn.h>[[__deprecated__]][[deprecated]] - Agregar
u8prefijo para literales de caracteres para representar la codificación UTF-8 para compatibilidad con C++17 . [ 48 ] [ 49 ] - Agregar directivas de
#elifdefpreprocesamiento#elifndefpara compatibilidad con C++23 . [ 33 ] (ver grupo "preprocessor")
Otro
- Compatibilidad con la norma ISO/IEC 60559:2020, la versión actual de la norma IEEE 754 para aritmética de punto flotante, con aritmética de punto flotante binaria extendida y aritmética de punto flotante decimal (opcional). [ 50 ] [ 51 ]
- El
constexprespecificador para objetos pero no para funciones, a diferencia del equivalente de C++ . [ 52 ] - Agregue
char8_tun tipo para almacenar datos codificados en UTF-8 y cambie el tipo de las constantes de caracteres u8 y los literales de cadena achar8_t. Además, las funcionesmbrtoc8()yc8rtomb()para convertir un carácter multibyte estrecho a codificación UTF-8 y un único punto de código de UTF-8 a una representación de carácter multibyte estrecho, respectivamente. [ 53 ] - Aclarar que todas
char16_tlas cadenas y literales deberán estar codificados en UTF-16 , y todaschar32_tlas cadenas y literales deberán estar codificados en UTF-32 , a menos que se especifique explícitamente lo contrario. [ 54 ] - Permitir que los especificadores de clase de almacenamiento aparezcan en la definición de literales compuestos. [ 55 ]
Biblioteca estándar
Funciones existentes
- Agregar
%bespecificador de conversión binaria aprintf()la familia de funciones. [ 56 ] - Agregar
%bespecificador de conversión binaria ascanf()la familia de funciones. [ 56 ] - Agregar soporte para conversión
0bbinaria0Ba las funcionesstrtol(),strtoll(),strtoul(),strtoull(), y sus contrapartes anchaswcstol(),wcstoll(),wcstoul(),wcstoull(). Si hay un signo presente, el0bo0Bsigue al signo. [ 56 ] - Agregue modificadores de ancho específicos y a la familia de funciones. [ 25 ]
%wN%wfNprintf() - Agregar modificadores de ancho específicos a la familia de funciones scanf . [ 25 ]
%wN%wfN() - Hacer que las funciones
bsearch(),bsearch_s(),memchr(),strchr(),strpbrk(),strrchr(),strstr(), y sus contrapartes ampliaswmemchr(),wcschr(),wcspbrk(),wcsrchr(),wcsstr()devuelvan un objeto calificado como const si se les pasó uno. [ 57 ]
Nuevas funciones
- Agregar
memset_explicit()función para borrar datos confidenciales, donde el almacenamiento en memoria siempre debe realizarse independientemente de las optimizaciones. [ 58 ]<string.h> - Agregar
memccpy()función<string.h>para concatenar cadenas de manera eficiente, similar a las extensiones C de POSIX y SVID . [ 59 ] - Agregar
strdup()funcionesstrndup()para<string.h>asignar una copia de una cadena, de forma similar a las extensiones C de POSIX y SVID . [ 60 ] - Agregar
memalignment()función para determinar la alineación de bytes de un puntero. [ 61 ]<stdlib.h> - Agregar
free_sized()funcionesfree_aligned_sized()para liberar memoria de manera más eficiente cuando se conoce el tamaño. [ 62 ]<stdlib.h> - Agregue funciones de utilidad de bits / macros / tipos en un nuevo encabezado para examinar muchos tipos enteros. Todos comienzan con para minimizar el conflicto con el código heredado y las bibliotecas de terceros. [ 63 ]
<stdbit.h>stdc_- En lo siguiente, reemplace
*conuc,us,ui,ul,ullpara cinco nombres de funciones, o en blanco para una macro genérica de tipo. [ 63 ] - Sumar
stdc_count_ones_*()ystdc_count_zeros_*()contar el número de bits 1 o 0 en el valor. [ 63 ] - Sumar
stdc_leading_ones_*()ystdc_leading_zeros_*()contar los bits 1 o 0 iniciales en el valor. [ 63 ] - Sumar
stdc_trailing_ones_*()ystdc_trailing_zeros_*()contar los bits 1 o 0 finales en el valor. [ 63 ] - Suma
stdc_first_leading_one_*()ystdc_first_leading_zero_*()para encontrar el primer bit principal con valor 1 o 0. [ 63 ] - Suma
stdc_first_trailing_one_*()ystdc_first_trailing_zero_*()para encontrar el primer bit final con valor 1 o 0. [ 63 ] - Suma
stdc_has_single_bit_*()para determinar si el valor es una potencia exacta de 2 (devuelve verdadero si y solo si hay un único bit 1). [ 63 ] - Suma
stdc_bit_floor_*()para determinar la mayor potencia entera de 2 que no sea mayor que el valor. [ 63 ] - Suma
stdc_bit_ceil_*()para determinar la potencia entera más pequeña de 2 que no sea menor que el valor. [ 63 ] - Sumar
stdc_bit_width_*()para determinar el número de bits que representan un valor. [ 63 ]
- En lo siguiente, reemplace
- Agregar
timegm()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 . [ 64 ]<time.h> - Nuevas funciones basadas en las recomendaciones de IEEE 754-2019, como las funciones trigonométricas que operan en unidades de
<math.h>yexp10. [ 65 ]
Características obsoletas
Características obsoletas del lenguaje de programación C eliminadas o descontinuadas en C23:
- Eliminar trígrafos . [ 66 ]
- Eliminar definiciones/declaraciones de funciones K&R (sin información sobre los argumentos de la función). [ 67 ] [ 68 ]
- Eliminar las representaciones de enteros con signo distintas del complemento a dos. Se requerirá la representación de enteros con signo en complemento a dos . [ 69 ]
- Las macros son características obsoletas. [ 70 ]
*_HAS_SUBNORM<float.h>
Soporte del compilador
Los siguientes compiladores implementan una bandera de compilación experimental para admitir este estándar:
Además, las versiones de GCC posteriores a GCC 15 ahora usan C23 por defecto. [ 74 ]
Textos disponibles
Al igual que otras ediciones del estándar C, el texto oficial de la norma ISO no está disponible gratuitamente.
El último borrador de trabajo previo a C23 que se hizo público fue el N3096, [ 7 ] con fecha del 1 de abril de 2023. En los meses posteriores a este borrador, se realizaron cientos de cambios [ 75 ] antes de producir el borrador de trabajo N3149 con fecha del 9 de julio de 2023 y el borrador oficial de la norma N3219 con fecha del 22 de febrero de 2024. [ 75 ] [ 76 ] Ninguno de estos borradores posteriores es público. [ 75 ] [ 76 ]
En la misma fecha en que se anunció el borrador de la norma N3219, se hizo público un nuevo borrador de trabajo N3220 [ 4 ] . Si bien este documento se describe oficialmente [ 76 ] como un borrador de la futura versión "C2Y" de la norma, el "Informe del editor" adjunto especifica que N3220 difiere del borrador de la norma C23 N3219 solo por una corrección en una nota al pie del Anexo K. [ 76 ]
Véase también
Referencias
- ↑ "Historia de C" . cppreference.com . 27 de junio de 2022. Archivado del original el 19 de octubre de 2022.
- ↑ "WG14-N2086: Carta C2x" . open-std.org . 2016-09-20. Archivado del original el 22 de diciembre de 2022.
- ↑ "ISO/IEC PRF 9899" . iso.org . Archivado del original el 19 de septiembre de 2024. Consultado el 20 de marzo de 2024 .
- 1 2 "ISO/IEC 9899:2024 (en) — Borrador de trabajo N3220" (PDF) . open-std.org . 2024-02-22.
- ↑ "WG14-N2437: Agenda para octubre de 2019" . open-std.org . 21 de octubre de 2019. Archivado del original el 5 de marzo de 2021.
- ↑ "Soporte para estándares C en GCC - Proyecto GNU" . gcc.gnu.org . Consultado el 8 de abril de 2026 .
- 1 2 "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.
- 1 2 "WR14-N3042: Introducir la constante nullptr" . open-std.org . 22 de julio de 2022. Archivado del original el 24 de diciembre de 2022.
- ↑ "WG14-N2626: Separadores de dígitos" (PDF) . open-std.org . 15 de diciembre de 2020. Archivado (PDF) del original el 19 de diciembre de 2022.
- ↑ "WG14-N2549: Permitir constantes enteras binarias" (PDF) . open-std.org . 30 de julio de 2020. Archivado (PDF) del original el 22 de diciembre de 2022.
- ↑ "WG14-N2775: Sufijos literales para enteros con precisión de bits" (PDF) . open-std.org . 13 de julio de 2021. Archivado (PDF) del original el 27 de diciembre de 2022.
- ↑ "WG14-N3030: Mejoras en las enumeraciones" . open-std.org . 19 de julio de 2022. Archivado del original el 26 de noviembre de 2022.
- ↑ "WG14-N3029: Enumeraciones normales mejoradas" . open-std.org . 19 de julio de 2022. Archivado del original el 29 de enero de 2023.
- ↑ "WG14-N2935: Convertir falso y verdadero en características de lenguaje de primera clase" (PDF) . open-std.org . 15 de febrero de 2022. Archivado (PDF) del original el 21 de noviembre de 2022.
- ↑ "WG14-N2934: Revisar la ortografía de las palabras clave" (PDF) . open-std.org . 15 de febrero de 2022. Archivado (PDF) del original el 24 de diciembre de 2022.
- ↑ "WG14-N2763: Adición de un tipo fundamental para enteros de N bits" (PDF) . open-std.org . 21 de junio de 2021. Archivado (PDF) del original el 27 de diciembre de 2022.
- ↑ "WG14-N3035: _BitInt Fixes" (PDF) . open-std.org . 21 de julio de 2022. Archivado (PDF) del original el 13 de octubre de 2022.
- ↑ "WG14-N2867: Enteros de N bits verificados" (PDF) . open-std.org . 28 de noviembre de 2021. Archivado (PDF) del original el 14 de diciembre de 2022.
- ↑ "WG14-N2778: Tipos modificados de forma variable" (PDF) . open-std.org . 11 de julio de 2021. Archivado (PDF) del original el 22 de diciembre de 2022.
- ↑ "WG14-N2607: Compatibilidad de punteros a matrices con calificadores" (PDF) . open-std.org . 31 de octubre de 2020. Archivado (PDF) del original el 13 de octubre de 2022.
- ↑ "WG14-N2899: Typeof para C, no tan mágico" . open-std.org . 21 de enero de 2022. Archivado del original el 24 de diciembre de 2022.
- ↑ "WG14-N3007: Inferencia de tipos para definiciones de objetos" . open-std.org . 10 de junio de 2022. Archivado del 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ú" . The Pasture . 31 de julio de 2022.
- 1 2 3 Seacord, Robtert C. (2021-03-09). "WG14-N2680: Modificador de longitud de ancho específico" (PDF) . open-std.org . Archivado (PDF) del original el 19-02-2025 . Recuperado el 18-11-2025 .
- ↑ "WG14-N2508: Posicionamiento libre de etiquetas dentro de enunciados compuestos" (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 . 9 de abril de 2020. Archivado (PDF) del original el 24 de diciembre de 2022.
- ↑ "WG14-N2900: Inicialización consistente, sin advertencias e intuitiva con {}" . open-std.org . 1 de enero de 2022. Archivado del original el 27 de diciembre de 2022.
- ↑ "WG14-N2975: Relajar los requisitos para las listas de parámetros variádicos" (PDF) . open-std.org . 15 de abril de 2022. Archivado (PDF) del original el 28 de noviembre de 2022.
- ↑ "WG14-N2335: Atributos en C" (PDF) . open-std.org . 9 de marzo de 2019. Archivado (PDF) del original el 26 de octubre de 2022.
- 1 2 "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 . 6 de julio de 2018. Archivado (PDF) del original el 28 de marzo de 2023.
- 1 2 "WG14-N2645: Agregar soporte para 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 añade soporte para las nuevas directivas #elifdef #elifndef" . phoronix . 12 de mayo de 2021. Archivado del original el 27 de diciembre de 2022.
- ↑ "WG14-N3017: #embed - un mecanismo de inclusión de recursos binarios escaneable y compatible con herramientas" . open-std.org . 27 de junio de 2022. Archivado del original el 24 de diciembre de 2022.
- ↑ "WG14-N2686: #advertencia" (PDF) . open-std.org . 22 de julio de 2022. Archivado (PDF) del original el 28 de noviembre de 2022.
- ↑ "WG14-N2799: __has_include para C" (PDF) . open-std.org . 30 de agosto de 2021. Archivado (PDF) del original el 24 de diciembre de 2022.
- ↑ "WG14-N2553: Consulta de la compatibilidad con atributos" (PDF) . open-std.org . 4 de agosto de 2020. Archivado (PDF) del original el 14 de octubre de 2022.
- ↑ "WG14-N3033: Omisión y eliminación de comas" . open-std.org . 2022-07-20. Archivado del original el 27 de diciembre de 2022.
- ↑ "Etiquetas al final de sentencias compuestas (compatibilidad con C)" (PDF) . 13/01/2022.
- ↑ "WG14-N2554: Limpiezas menores en la redacción de atributos" (PDF) . open-std.org . 4 de agosto de 2020. Archivado (PDF) del original el 28 de noviembre de 2022.
- ↑ "WG14-N2334: El atributo obsoleto" (PDF) . open-std.org . 22 de enero de 2019. Archivado (PDF) del original el 19 de octubre de 2022.
- ↑ "WG14-N2408: El atributo fallthrough" (PDF) . open-std.org . 11 de agosto de 2019. Archivado (PDF) del original el 25 de diciembre de 2022.
- ↑ "WG14-N2270: El atributo maybe_unused" (PDF) . open-std.org . 6 de julio de 2018. Archivado (PDF) del original el 25 de diciembre de 2022.
- ↑ "WG14-N2267: El atributo nodiscard" (PDF) . open-std.org . 6 de julio de 2018. Archivado (PDF) del original el 19 de octubre de 2022.
- ↑ "WG14-N2764: El atributo noreturn" (PDF) . open-std.org . 21 de junio de 2021. Archivado (PDF) del original el 25 de diciembre de 2022.
- ↑ "WG14-N2557: Permitir atributos duplicados" (PDF) . open-std.org . 1 de septiembre de 2020. Archivado (PDF) del original el 28 de noviembre de 2022.
- ↑ "WG14-N2418: Adición del prefijo de caracteres u8" (PDF) . open-std.org . 2 de septiembre de 2019. Archivado (PDF) del original el 13 de enero de 2023.
- ↑ ¿Cuál es el propósito de los literales de caracteres UTF-8 propuestos para C++17?; Stack Overflow.
- ↑ "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 - Intercambio IEC 60559 y tipos extendidos" (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 . 6 de julio de 2022. Archivado del 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 . 4 de junio de 2021. Archivado del original el 27 de mayo de 2023.
- ↑ "WG14-N2728: Los literales de cadena char16_t y char32_t deberán ser UTF-16 y UTF-32" . open-std.org . 15 de mayo de 2021. Archivado del original el 27 de mayo de 2023.
- ↑ "WG14-N3038: Introducir especificadores de clase de almacenamiento para literales compuestos" . open-std.org . 21 de julio de 2022. Archivado del original el 26 de noviembre de 2022.
- 1 2 3 "WG14-N2630: entrada/salida formateada de números enteros binarios" (PDF) . open-std.org . 1 de enero de 2021. Archivado (PDF) del original el 14 de diciembre de 2022.
- ↑ "WG14-N3020: Funciones de biblioteca estándar que preservan los calificadores" (PDF) . open-std.org . 13 de junio de 2022. Archivado (PDF) del original el 13 de octubre de 2022.
- ↑ "WG14-N2897: memset_explicit()" . open-std.org . 27 de diciembre de 2021. Archivado del original el 25 de octubre de 2022.
- ↑ "WG14-N2349: Hacia una copia y concatenación de cadenas más eficientes" . open-std.org . 18 de marzo de 2019. Archivado del original el 30 de septiembre de 2022.
- ↑ "WG14-N2353: strdup() y strndup()" . open-std.org . 18 de marzo de 2019. Archivado del original el 24 de diciembre de 2022.
- ↑ "WG14-N2974: Alineación de punteros consultables" (PDF) . open-std.org . 15 de abril de 2022. Archivado (PDF) del original el 13 de octubre de 2022.
- ↑ "WG14-N2699: Desasignación de memoria dimensionada" . open-std.org . 24 de marzo de 2021.
{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace ) - 1 2 3 4 5 6 7 8 9 10 11 "WG14-N3022: Utilidades de bits modernas" . open-std.org . 6 de julio de 2022. Archivado del original el 24 de diciembre de 2022.
- ↑ "WG14-N2833: Agregar timegm() como parte no opcional de time.h" . open-std.org . 7 de octubre de 2021. Archivado del original el 1 de diciembre de 2021.
- ↑ Consulte N3096 § B.11 para obtener una descripción general útil. Las funciones se agregaron en documentos separados: N2488, sus versiones actualizadas y sus referencias.
- ↑ "WG14-N2940: ¿Eliminar trígrafos?!" (PDF) . open-std.org . 2 de marzo de 2022. Archivado (PDF) del original el 26 de octubre de 2022.
- ↑ "WG14-N2432: Propuesta para eliminar la compatibilidad con definiciones de funciones mediante 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 se permiten declaradores de funciones sin prototipos" . open-std.org . 10 de octubre de 2021. Archivado del original el 12 de noviembre de 2022.
- ↑ "WG14-N2412: Representación de signos en 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 sea obsoleto" . open-std.org . 6 de junio de 2022. Archivado del original el 5 de diciembre de 2022.
- ↑ "Notas de la versión de GCC 9" . Proyecto GNU . Archivado del original el 27 de diciembre de 2022.
- ↑ "Clang 9.0 - agregar nuevo modo de lenguaje para C2x" . Repositorio del proyecto LLVM . 14 de mayo de 2019. Archivado del original el 27 de diciembre de 2022.
- ↑ "Pelles C - cambios importantes entre las 10:00 y las 11:00" . smorgasbordet.com . Archivado del original el 27 de diciembre de 2022.
- ↑ "Serie de lanzamientos de GCC 15" . Proyecto GNU . Consultado el 13 de julio de 2025 .
- 1 2 3 "N3150 - Informe del editor, después de la reunión de enero-febrero de 2023" . open-std.org . 2023-07-08.
- 1 2 3 4 "N3221 - Informe del editor, posterior a la reunión de enero de 2024" . open-std.org . 15 de febrero de 2024.
Lecturas adicionales
- ISO/IEC 9899:2024 (norma oficial C23); ISO ; 2024. (disponible pero no gratuita)
- N3096 (último borrador de trabajo disponible gratuitamente antes del 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 ISO/IEC 9899:2023 DIS ); WG14; febrero de 2024. (Borrador de ISO disponible, pero no gratuito)
- N3220 (primer borrador de trabajo tras C23; difiere del borrador de norma N3219 únicamente en una nota a pie de página); WG14; febrero de 2024. (descarga gratuita)
Enlaces externos
- Lenguaje C WG14 (Grupo de Trabajo 14)
- Repositorio de documentos del Grupo de Trabajo 14
- Reuniones del Grupo de Trabajo 14 : orden del día y actas.
- Cartas del Grupo de Trabajo 14: Carta C2x , Carta C23 , Interpretación de la Carta C23 , Carta de la Norma C
- C (lenguaje de programación)
- estándares de lenguajes de programación