stringtranslate.com

C23 (revisión del estándar C)

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

Funciones existentes

Preprocesador

Tipos

Constantes

Palabras clave

Sintaxis

Compatibilidad con C++

Otras características

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

  1. ^ "Historia de C". cppreference.com . 2022-06-27. Archivado desde el original el 19 de octubre de 2022.
  2. ^ "WG14-N2086: Carta C2x". open-std.org . 20 de septiembre de 2016. Archivado desde el original el 22 de diciembre de 2022.
  3. ^ 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.
  4. ^ 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.
  5. ^ "WG14-N2437: Agenda para octubre de 2019". open-std.org . 2019-10-21. Archivado desde el original el 5 de marzo de 2021.
  6. ^ "WG14-N2897: memset_explicit()". open-std.org . 2021-12-27. Archivado desde el original el 25 de octubre de 2022.
  7. ^ "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.
  8. ^ "WG14-N2353: strdup() y strndup()". open-std.org . 2019-03-18. Archivado desde el original el 24 de diciembre de 2022.
  9. ^ "WG14-N2974: Alineación de punteros consultables" (PDF) . open-std.org . 2022-04-15. Archivado (PDF) del original el 13 de octubre de 2022.
  10. ^ abcdefghijk "WG14-N3022: Utilidades de bits modernas". open-std.org . 2022-07-06. Archivado desde el original el 24 de diciembre de 2022.
  11. ^ "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.
  12. ^ 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.
  13. ^ 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.
  14. ^ "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.
  15. ^ 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.
  16. ^ "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.
  17. ^ "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.
  18. ^ "WG14-N2686: #advertencia" (PDF) . open-std.org . 2022-07-22. Archivado (PDF) del original el 28 de noviembre de 2022.
  19. ^ "WG14-N2799: __has_include para C" (PDF) . open-std.org . 2021-08-30. Archivado (PDF) del original el 24 de diciembre de 2022.
  20. ^ "WG14-N2553: Consulta de compatibilidad de atributos" (PDF) . open-std.org . 2020-08-04. Archivado (PDF) del original el 14 de octubre de 2022.
  21. ^ "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.
  22. ^ ab "WR14-N3042: Introducir la constante nullptr". open-std.org . 2022-07-22. Archivado desde el original el 24 de diciembre de 2022.
  23. ^ "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.
  24. ^ "WG14-N3035: Correcciones de errores _BitInt" (PDF) . open-std.org . 2022-07-21. Archivado (PDF) del original el 13 de octubre de 2022.
  25. ^ "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.
  26. ^ "WG14-N2778: Tipos modificados de forma variable" (PDF) . open-std.org . 2021-07-11. Archivado (PDF) del original el 22 de diciembre de 2022.
  27. ^ "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.
  28. ^ "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.
  29. ^ "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.
  30. ^ "WG14-N3037: Reglas mejoradas para la compatibilidad de etiquetas (actualiza N3032)" (PDF) .
  31. ^ "C23 ha terminado: esto es lo que hay en el menú". El Pasto . 31 de julio de 2022.
  32. ^ "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.
  33. ^ "WG14-N2549: Permitir constantes enteras binarias" (PDF) . open-std.org . 2020-07-30. Archivado (PDF) del original el 22 de diciembre de 2022.
  34. ^ "WG14-N2626: Separadores de dígitos" (PDF) . open-std.org . 2020-12-15. Archivado (PDF) del original el 19 de diciembre de 2022.
  35. ^ "WG14-N3030: Mejoras en las enumeraciones". open-std.org . 2022-07-19. Archivado desde el original el 26 de noviembre de 2022.
  36. ^ "WG14-N3029: Enumeraciones normales mejoradas". open-std.org . 19 de julio de 2022. Archivado desde el original el 29 de enero de 2023.
  37. ^ "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.
  38. ^ "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.
  39. ^ "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.
  40. ^ "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.
  41. ^ "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.
  42. ^ "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.
  43. ^ "WG14-N2335: Atributos en C" (PDF) . open-std.org . 2019-03-09. Archivado (PDF) del original el 26 de octubre de 2022.
  44. ^ ab "Funciones no secuenciadas". open-std.org . Consultado el 18 de julio de 2024 .
  45. ^ "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.
  46. ^ "Etiquetas al final de sentencias compuestas (compatibilidad con C)" (PDF) . 2022-01-13.
  47. ^ "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.
  48. ^ "WG14-N2334: El atributo obsoleto" (PDF) . open-std.org . 2019-01-22. Archivado (PDF) del original el 19 de octubre de 2022.
  49. ^ "WG14-N2408: El atributo fallthrough" (PDF) . open-std.org . 2019-08-11. Archivado (PDF) del original el 25 de diciembre de 2022.
  50. ^ "WG14-N2270: El atributo maybe_unused" (PDF) . open-std.org . 2018-07-06. Archivado (PDF) del original el 25 de diciembre de 2022.
  51. ^ "WG14-N2267: El atributo nodiscard" (PDF) . open-std.org . 2018-07-06. Archivado (PDF) del original el 19 de octubre de 2022.
  52. ^ "WG14-N2764: El atributo noreturn" (PDF) . open-std.org . 2021-06-21. Archivado (PDF) del original el 25 de diciembre de 2022.
  53. ^ "WG14-N2557: Permitir atributos duplicados" (PDF) . open-std.org . 2020-09-01. Archivado (PDF) del original el 28 de noviembre de 2022.
  54. ^ "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.
  55. ^¿ Cuál es el objetivo de los literales de caracteres UTF-8 propuestos para C++17?; Desbordamiento de pila.
  56. ^ "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.
  57. ^ "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.
  58. ^ "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.
  59. ^ "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.
  60. ^ "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.
  61. ^ "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.
  62. ^ "WG14-N2940: ¿Eliminación de trígrafos?" (PDF) . open-std.org . 2022-03-02. Archivado (PDF) del original el 26 de octubre de 2022.
  63. ^ "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.
  64. ^ "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.
  65. ^ "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.
  66. ^ "WG14-N2993: Hacer que *_HAS_SUBNORM quede obsoleto". open-std.org . 2022-06-06. Archivado desde el original el 5 de diciembre de 2022.
  67. ^ "Notas de la versión de GCC 9". Proyecto GNU . Archivado desde el original el 27 de diciembre de 2022.
  68. ^ "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.
  69. ^ "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

Enlaces externos

  • 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