C23 (مراجعة معيار C)

C23 ، أو ISO/IEC 9899:2024 رسميًا ، هو المعيار المفتوح الحالي للغة البرمجة C ، والذي يحل محل C17 (المعيار ISO/IEC 9899:2018). [ 1 ] بدأ العمل عليه بشكل غير رسمي في عام 2016 تحت اسم C2x، [ 2 ] ونُشر في 31 أكتوبر 2024. [ 3 ] المسودة المتاحة مجانًا والأكثر تشابهًا مع المسودة المنشورة هي الوثيقة N3220 [ 4 ] (انظر النصوص المتاحة ، أدناه). عُقد الاجتماع الأول لمجموعة العمل WG14 لمسودة C2x في أكتوبر 2019، [ 5 ] وعُقدت اجتماعات افتراضية عن بُعد في عام 2020 بسبب جائحة كوفيد-19 ، ثم استمرت اجتماعات المؤتمرات عن بُعد حتى عام 2024.

يدعم GCC معيار C23 (ويدعم معيار C2Y بشكل غير كامل). [ 6 ] يدعم Clang معيار C23 بشكل جزئي.

في C23، تتغير قيمة __STDC_VERSION__من 201710Lإلى 202311L. وتعكس الأسماء الشائعة "C17" و "C23" هذه القيم، والتي يتم تجميدها قبل الاعتماد النهائي، بدلاً من السنوات في معرفات معايير ISO (9899:2018 و 9899:2024).

سمات

التغييرات المدمجة في أحدث مسودة عمل من C23 مدرجة أدناه. [ 7 ]

الثوابت

  • أضف nullptrثابتًا nullptr_tللنوع. [ 8 ]
  • أضف 'فاصل الأرقام إلى الثوابت الحرفية، [ 9 ] مثل 0xFE'DC'BA'98(التي تساوي 0xFEDCBA98)، 299'792'458(التي تساوي 2997924581.414'213'562(التي تساوي 1.414213562 ).
  • 0bتمت إضافة بادئات 0Bالثوابت الثنائية الحرفية ، [ 10 ] مثل 0b10101010(التي تساوي 0xAA)، وقد أُضيفت سابقًا في معيار C++14 . هذا التغيير مشابه للبادئات 0xالسداسية 0Xالعشرية التي تم اعتمادها سابقًا .
  • أضف wbلواحق uwbحرفية عددية صحيحة لأنواع و ، [ 11 ] مثل ينتج ، وينتج الذي يحتوي على ثلاثة بتات قيمة وبت إشارة واحد._BitInt(N)unsigned_BitInt(N)6uwbunsigned _BitInt(3)-6wbsigned _BitInt(4)
  • أضف إمكانية تحديد النوع الأساسي لـ enum. [ 12 ]
  • السماح enumبتخزين القيم التي لا يمكن تمثيلها بواسطة نوع أساسي ثابت int. [ 13 ]

الكلمات المفتاحية

  • أضف الكلمات trueالمفتاحية false. [ 14 ]
  • أضف الكلمات المفتاحية alignas, alignof, bool, static_assert, thread_local. تصبح الكلمات المفتاحية المُعرّفة سابقًا تهجئات بديلة: _Alignas, _Alignof, _Bool, _Static_assert, _Thread_local. [ 15 ]
  • أضف _BitIntالكلمة المفتاحية (انظر مجموعة "الأنواع").
  • أضف typeofالكلمات typeof_unqualالرئيسية (انظر مجموعة "الأنواع").
  • أضف nullptrالكلمة المفتاحية (انظر مجموعة "الثوابت").
  • أضف constexprالكلمة المفتاحية (انظر مجموعة "أخرى").
  • أضف الكلمات المفتاحية _Decimal32, _Decimal64, للحسابات العشرية ذات الفاصلة العائمة_Decimal128 (اختياري) (انظر مجموعة "أخرى").

الأنواع

  • أضف نوع مؤشرnullptr_t فارغ . [ 8 ]
  • أضف أنواعًا للأعداد الصحيحة ذات الدقة البتية. أضف ماكرو لعرض البت الأقصى. [ 16 ] [ 17 ]_BitInt(N)unsigned_BitInt(N)BITINT_MAXWIDTH
  • أضف وحدات الماكرو ckd_add(), ckd_sub(), ckd_mul()لعمليات التحقق من الأعداد الصحيحة. [ 18 ]
  • تُصبح الأنواع المُعدّلة بشكل متغير (ولكن ليس المتغيرات المُخصصة تلقائيًا على المكدس) ميزة إلزامية. [ 19 ]
  • دعم أفضل للاستخدام constمع المصفوفات. [ 20 ]
  • توحيد إجراءات المشغل typeof(...). [ 21 ]
  • autoتم تغيير معنى الكلمة المفتاحية بحيث تُتيح استنتاج النوع مع الاحتفاظ بمعناها القديم كمُحدِّد لفئة التخزين عند استخدامها مع نوع. على عكس لغة C++ ، تسمح لغة C23 باستنتاج النوع فقط لتعريفات الكائنات (لا تستنتج نوع القيمة المُعادة من الدالة أو نوع مُعامل الدالة). [ 22 ]
  • تم تغيير قواعد التوافق للأنواع الهيكلية والاتحادية والمُعدّدة للسماح بإعادة تعريف نوع متوافق بنفس الوسم. [ 23 ]
  • قد يتجاوز العدد الصحيح ذو العرض الدقيق الآن intmax_t(N2888). [ 24 ]
  • حدد أنه عند التعريف يجب أن يكون من نفس النوع [ 25 ][u]intN_t[u]int_leastN_t

بناء الجملة

  • يمكن أن تظهر التسميات قبل التصريحات وفي نهاية العبارات المركبة . [ 26 ]
  • المعاملات غير المسماة في تعريفات الدوال. [ 27 ]
  • تهيئة الصفر {}(بما في ذلك تهيئة المصفوفات الكبيرة جدًا). ​​[ 28 ]
  • لم تعد الدوال ذات الوسائط المتغيرة بحاجة إلى وسيط مُسمى قبل علامة الحذف، va_startولم يعد الماكرو بحاجة إلى وسيط ثانٍ، كما أنه لا يُقيّم أي وسيط بعد الوسيط الأول إن وُجد. [ 29 ]
  • أضف صيغة سمات نمط C++11 [ 30 ] باستخدام أقواس مربعة مزدوجة . بالإضافة إلى سمات C++11 المذكورة أدناه، أضف سمات جديدة: [[]]
    • [[unsequenced]][ 31 ] يسمح بتحسينات المُصرّف للدوال التي تُنتج مخرجات قابلة للتكرار بناءً على مُعاملاتها فقط.
    • [[reproducible]][ 31 ] مشابه لـ ، ولكن بالنسبة للدوال[[unsequenced]] التي يهم ترتيب استدعائها أيضًا
  • أضف وسيطًا واحدًا static_assertللتوافق مع C++17 . [ 32 ]
  • void foo()تُفهم الدوال التي لا تحتوي على وسائط مدرجة في النموذج الأولي (على سبيل المثال ) على أنها لا تأخذ أي وسائط (انظر إزالة تعريفات دوال K&R).

المعالج المسبق

  • أضف التوجيهات#elifdef و ، [ 33 ] والتي تُعادل أساسًا التوجيهات و . تمت إضافة كلا التوجيهين إلى معيار C++23 و GCC 12. [ 34 ]#elifndef#elif defined#elif !defined
  • أضف #embedتوجيهًا لتضمين الموارد الثنائية والسماح __has_embedبتوجيهات المعالج المسبق بالتحقق من توافر المورد. [ 35 ]
  • أضف #warningتوجيهًا للتشخيص. [ 36 ]
  • أضف __has_includeإمكانية التحقق من توفر رأس الملف بواسطة توجيهات المعالج المسبق. [ 37 ]
  • أضف __has_c_attributeإمكانية التحقق من توفر السمة بواسطة توجيهات المعالج المسبق. [ 38 ] (انظر مجموعة " توافق C++ " لميزة السمة الجديدة)
  • أضف __VA_OPT__ماكرو وظيفيًا للماكروات المتغيرة الوسائط، بحيث يتوسع إلى وسيطه فقط إذا تم تمرير وسيط متغير الوسائط إلى الماكرو الحاوي. [ 39 ]

التوافق مع لغة C++

  • تُحسّن تغييراتٌ عديدة في بناء الجملة التوافق مع لغة C++، مثل وضع التسميات قبل التصريحات، ومعاملات الدوال غير المُسماة، والتهيئة الصفرية باستخدام {}، والدوال ذات عدد متغير من الوسائط بدون معامل مُسمى، وسمات نمط C++11_Static_assert (انظر بناء الجملة). أُجري تغييرٌ مُقابلٌ للتسميات في نهاية العبارات المركبة في C++23 . [ 40 ]
  • أضف سمات بنمط C++ (انظر قسم بناء الجملة). أضف السمات [ 41 ] ، [ 42 ] ، [ 43 ] ، [ 44 ] ، [ 45 ] وسمة أخرى للتوافق مع C++11 ، ثم قم بإلغاء ميزات الترويسة المُقدمة في C11 . [ 46 ] يُسمح بتكرار السمات للتوافق مع C++23 . [ 47 ] يمكن أيضًا إحاطة جميع السمات القياسية بشرطتين سفليتين (على سبيل المثال، مكافئ لـ ).[[deprecated]][[fallthrough]][[maybe_unused]][[nodiscard]][[noreturn]]_Noreturnnoreturn<stdnoreturn.h>[[__deprecated__]][[deprecated]]
  • أضف u8بادئة للأحرف الحرفية لتمثيل ترميز UTF-8 من أجل التوافق مع C++17 . [ 48 ] [ 49 ]
  • أضف توجيهات المعالجة #elifdefالمسبقة #elifndefللتوافق مع C++23 . [ 33 ] (انظر مجموعة "المعالج المسبق").

آخر

  • يدعم هذا البرنامج معيار ISO/IEC 60559:2020، وهو الإصدار الحالي من معيار IEEE 754 للحسابات ذات الفاصلة العائمة، مع دعم موسع للحسابات الثنائية ذات الفاصلة العائمة، و(اختياري) الحسابات العشرية ذات الفاصلة العائمة. [ 50 ] [ 51 ]
  • المحدد constexprللكائنات وليس للدوال، على عكس ما يعادله في لغة C++ . [ 52 ]
  • أضف char8_tنوعًا لتخزين البيانات المشفرة بترميز UTF-8 ، وغيّر نوع ثوابت الأحرف u8 والسلاسل النصية إلى نوع آخر . كذلك، أضف char8_tالدالتين لتحويل حرف متعدد البايتات ضيق إلى ترميز UTF-8، وتحويل نقطة ترميز واحدة من UTF-8 إلى تمثيل حرف متعدد البايتات ضيق، على التوالي. [ 53 ]mbrtoc8()c8rtomb()
  • يجب توضيح أن جميع char16_tالسلاسل النصية والقيم الحرفية يجب أن تكون مشفرة بنظام UTF-16 ، وجميع char32_tالسلاسل النصية والقيم الحرفية يجب أن تكون مشفرة بنظام UTF-32 ، ما لم يُنص صراحةً على خلاف ذلك. [ 54 ]
  • السماح بظهور محددات فئة التخزين في تعريف الحرف المركب. [ 55 ]

المكتبة القياسية

الوظائف الحالية

  • أضف %bمُحدِّد التحويل الثنائي إلى printf()عائلة الدوال. [ 56 ]
  • أضف %bمُحدِّد التحويل الثنائي إلى scanf()عائلة الدوال. [ 56 ]
  • أضف دعم التحويل 0bالثنائي 0Bإلى الدوال strtol()، strtoll()، strtoul()، strtoull()، ونظائرها الواسعة wcstol()، wcstoll()، wcstoul()، wcstoull(). إذا كانت هناك إشارة، فإن 0bأو 0Bيتبع الإشارة. [ 56 ]
  • أضف مُعدِّلات العرض المحددة إلى عائلة الوظائف. [ 25 ]%wN%wfNprintf()
  • أضف مُعدِّلات عرض مُحدَّدة إلى عائلة دوال scanf . [ 25 ]%wN%wfN()
  • اجعل الدوال bsearch()، bsearch_s()، memchr()، strchr()، strpbrk()، strrchr()، strstr()ونظائرها الواسعة wmemchr()، wcschr()، wcspbrk()، wcsrchr()، wcsstr()تُرجع كائنًا مؤهلًا من نوع const إذا تم تمرير واحد إليها. [ 57 ]

وظائف جديدة

  • أضف memset_explicit()وظيفة لمسح البيانات الحساسة، حيث يجب دائمًا تنفيذ عملية تخزين الذاكرة بغض النظر عن التحسينات. [ 58 ]<string.h>
  • أضف memccpy()وظيفة <string.h>لدمج السلاسل بكفاءة - على غرار امتدادات POSIX و SVID C. [ 59 ]
  • أضف strdup()وظائف strndup()لتخصيص <string.h>نسخة من سلسلة نصية - على غرار امتدادات POSIX و SVID C. [ 60 ]
  • أضف memalignment()دالة لتحديد محاذاة البايت للمؤشر. [ 61 ]<stdlib.h>
  • أضف free_sized()وظائف free_aligned_sized()لتحرير الذاكرة بكفاءة أكبر عندما يكون الحجم معروفًا. [ 62 ]<stdlib.h>
  • أضف دوال/وحدات ماكرو/أنواع مساعدة للبتات في ملف رأس جديد لفحص أنواع متعددة من الأعداد الصحيحة. تبدأ جميعها بـ لتقليل التعارض مع التعليمات البرمجية القديمة ومكتبات الطرف الثالث. [ 63 ]<stdbit.h>stdc_
    • فيما يلي، استبدل *بـ uc، us، ui، ul، ullلخمسة أسماء دوال، أو اتركه فارغًا لماكرو عام النوع. [ 63 ]
    • أضف stdc_count_ones_*()لحساب stdc_count_zeros_*()عدد البتات التي قيمتها 1 أو 0. [ 63 ]
    • أضف stdc_leading_ones_*()لحساب stdc_leading_zeros_*()البتات البادئة 1 أو 0 في القيمة. [ 63 ]
    • أضف stdc_trailing_ones_*()لحساب stdc_trailing_zeros_*()البتات اللاحقة 1 أو 0 في القيمة. [ 63 ]
    • أضف stdc_first_leading_one_*()و stdc_first_leading_zero_*()للعثور على أول بت رئيسي بقيمة 1 أو 0. [ 63 ]
    • أضف stdc_first_trailing_one_*()و stdc_first_trailing_zero_*()للعثور على أول بت لاحق بقيمة 1 أو 0. [ 63 ]
    • أضف stdc_has_single_bit_*()لتحديد ما إذا كانت القيمة قوة دقيقة للعدد 2 (أرجع القيمة "صحيح" إذا وفقط إذا كان هناك بت واحد قيمته 1). [ 63 ]
    • أضف stdc_bit_floor_*()لتحديد أكبر قوة صحيحة للعدد 2 لا تتجاوز القيمة. [ 63 ]
    • أضف stdc_bit_ceil_*()لتحديد أصغر قوة صحيحة للعدد 2 لا تقل عن القيمة. [ 63 ]
    • أضف stdc_bit_width_*()لتحديد عدد البتات اللازمة لتمثيل قيمة ما. [ 63 ]
  • أضف timegm()دالة لتحويل بنية الوقت إلى قيمة وقت التقويم - على غرار الدالة الموجودة في مكتبات glibc و musl . [ 64 ]<time.h>
  • وظائف جديدة تستند إلى توصيات IEEE 754-2019، مثل وظائف حساب المثلثات التي تعمل على وحدات<math.h>πx{\displaystyle \pi x}و exp10. [ 65 ]

الميزات القديمة

ميزات لغة البرمجة C القديمة التي تمت إزالتها أو إهمالها من C23:

  • قم بإزالة الثلاثيات . [ 66 ]
  • قم بإزالة تعريفات/تصريحات دوال K&R (بدون معلومات حول وسائط الدالة). [ 67 ] [ 68 ]
  • قم بإزالة تمثيلات الأعداد الصحيحة الموقعة بخلاف تمثيل المتمم الثنائي. سيكون تمثيل العدد الصحيح الموقع باستخدام المتمم الثنائي مطلوبًا. [ 69 ]
  • تُعتبر وحدات الماكرو في الميزات القديمة. [ 70 ]*_HAS_SUBNORM<float.h>

دعم المُترجم

تُطبّق المترجمات التالية علامة ترجمة تجريبية لدعم هذا المعيار:

بالإضافة إلى ذلك، تستخدم إصدارات GCC الأحدث من GCC 15 الآن C23 بشكل افتراضي. [ 74 ]

النصوص المتاحة

ومثل الإصدارات الأخرى من معيار C، فإن النص الرسمي لمعيار ISO غير متاح مجاناً.

آخر مسودة عمل قبل C23 نُشرت للعموم هي N3096، [ 7 ] بتاريخ 1 أبريل 2023. في الأشهر التي تلت هذه المسودة، أُجريت مئات التعديلات [ 75 ] قبل إصدار مسودة العمل N3149 بتاريخ 9 يوليو 2023، ومسودة المعيار الرسمية N3219 بتاريخ 22 فبراير 2024. [ 75 ] [ 76 ] لم تُنشر أي من هاتين المسودتين الأخيرتين للعموم. [ 75 ] [ 76 ]

في نفس تاريخ الإعلان عن مسودة المعيار N3219، نُشرت مسودة عمل جديدة N3220 [ 4 ] . وبينما يُوصف هذا المستند رسميًا [ 76 ] بأنه مسودة للنسخة المستقبلية "C2Y" من المعيار، يُشير "تقرير المحرر" المُرفق إلى أن N3220 لا يختلف عن مسودة معيار C23 N3219 إلا بتصحيح حاشية واحدة في الملحق K. [ 76 ]

انظر أيضاً

مراجع

  1. "تاريخ لغة C" . cppreference.com . 27-06-2022. مؤرشف من الأصل في 19 أكتوبر 2022.
  2. "WG14-N2086: ميثاق C2x" . open-std.org . 2016-09-20. مؤرشف من الأصل في 22 ديسمبر 2022.
  3. "ISO/IEC PRF 9899" . iso.org . مؤرشف من الأصل في 19 سبتمبر 2024. تم الاطلاع عليه في 20 مارس 2024 .
  4. 1 2 "ISO/IEC 9899:2024 (en) — N3220 مسودة عمل" (PDF) . open-std.org . 2024-02-22.
  5. "WG14-N2437: جدول أعمال أكتوبر 2019" . open-std.org . 21 أكتوبر 2019. مؤرشف من الأصل في 5 مارس 2021.
  6. "دعم معايير لغة C في GCC - مشروع GNU" . gcc.gnu.org . تم الاطلاع عليه بتاريخ 2026-04-08 .
  7. 1 2 "WG14-N3096: مسودة ISO/IEC 9899:2024" (ملف PDF) . open-std.org . 1 أبريل 2023. مؤرشف (ملف PDF) من الأصل في 2 أبريل 2023.
  8. 1 2 "WR14-N3042: تقديم الثابت nullptr" . open-std.org . 2022-07-22. مؤرشف من الأصل في 24 ديسمبر 2022.
  9. "WG14-N2626: فواصل الأرقام" (ملف PDF) . open-std.org . 15 ديسمبر 2020. مؤرشف (ملف PDF) من الأصل في 19 ديسمبر 2022.
  10. "WG14-N2549: السماح بالثوابت العددية الثنائية" (ملف PDF) . open-std.org . 30 يوليو 2020. مؤرشف (ملف PDF) من الأصل في 22 ديسمبر 2022.
  11. "WG14-N2775: اللواحق الحرفية للأعداد الصحيحة الدقيقة بتياً" (ملف PDF) . open-std.org . 13 يوليو 2021. مؤرشف (ملف PDF) من الأصل في 27 ديسمبر 2022.
  12. "WG14-N3030: تحسينات على عمليات التعداد" . open-std.org . 19 يوليو 2022. مؤرشف من الأصل في 26 نوفمبر 2022.
  13. "WG14-N3029: تعدادات طبيعية محسّنة" . open-std.org . 19 يوليو 2022. مؤرشف من الأصل في 29 يناير 2023.
  14. "WG14-N2935: جعل خصائص اللغة من الدرجة الأولى، سواء كانت صحيحة أو خاطئة" (ملف PDF) . open-std.org . 15 فبراير 2022. مؤرشف (ملف PDF) من الأصل في 21 نوفمبر 2022.
  15. "WG14-N2934: مراجعة تهجئة الكلمات المفتاحية" (ملف PDF) . open-std.org . 15 فبراير 2022. مؤرشف (ملف PDF) من الأصل في 24 ديسمبر 2022.
  16. "WG14-N2763: إضافة نوع أساسي للأعداد الصحيحة ذات N بت" (ملف PDF) . open-std.org . 2021-06-21. مؤرشف (ملف PDF) من الأصل في 27 ديسمبر 2022.
  17. "WG14-N3035: إصلاحات _BitInt" (ملف PDF) . open-std.org . 2022-07-21. مؤرشف (ملف PDF) من الأصل في 13 أكتوبر 2022.
  18. "WG14-N2867: التحقق من الأعداد الصحيحة ذات N بت" (ملف PDF) . open-std.org . 2021-11-28. مؤرشف (ملف PDF) من الأصل في 14 ديسمبر 2022.
  19. "WG14-N2778: أنواع البيانات المعدلة بشكل متغير" (ملف PDF) . open-std.org . 2021-07-11. مؤرشف (ملف PDF) من الأصل في 22 ديسمبر 2022.
  20. "WG14-N2607: توافق المؤشرات إلى المصفوفات مع المحددات" (ملف PDF) . open-std.org . 31 أكتوبر 2020. مؤرشف (ملف PDF) من الأصل في 13 أكتوبر 2022.
  21. "WG14-N2899: ليس سحريًا تمامًا - typeof للغة C" . open-std.org . 2022-01-21. مؤرشف من الأصل في 24 ديسمبر 2022.
  22. "WG14-N3007: استنتاج النوع لتعريفات الكائنات" . open-std.org . 2022-06-10. مؤرشف من الأصل في 24 ديسمبر 2022.
  23. "WG14-N3037: قواعد محسنة لتوافق العلامات (تحديثات N3032)" (PDF) .
  24. "انتهى مؤتمر C23: إليكم ما هو مُدرج في القائمة" . ذا باستشر . 31 يوليو 2022.
  25. 1 2 3 سيكورد، روبرت سي. (2021-03-09). "WG14-N2680: مُعدِّل عرض وطول مُحدَّد" (ملف PDF) . open-std.org . مؤرشف (ملف PDF) من الأصل بتاريخ 2025-02-19 . تم الاطلاع عليه بتاريخ 2025-11-18 .
  26. "WG14-N2508: حرية تحديد موضع التسميات داخل العبارات المركبة" (ملف PDF) . open-std.org . 2020-03-28. مؤرشف (ملف PDF) من الأصل في 27 ديسمبر 2022.
  27. "WG14-N2510: السماح بالمعاملات غير المسماة في تعريف الدالة" (ملف PDF) . open-std.org . 2020-04-09. مؤرشف (ملف PDF) من الأصل في 24 ديسمبر 2022.
  28. "WG14-N2900: تهيئة متسقة، وخالية من التحذيرات، وبديهية باستخدام {}" . open-std.org . 2022-01-01. مؤرشف من الأصل في 27 ديسمبر 2022.
  29. "WG14-N2975: تخفيف متطلبات قوائم المعاملات المتغيرة" (ملف PDF) . open-std.org . 15 أبريل 2022. مؤرشف (ملف PDF) من الأصل في 28 نوفمبر 2022.
  30. "WG14-N2335: السمات في لغة C" (ملف PDF) . open-std.org . 2019-03-09. مؤرشف (ملف PDF) من الأصل في 26 أكتوبر 2022.
  31. 1 2 "الدوال غير المتسلسلة" . open-std.org . تم الاسترجاع في 18-07-2024 .
  32. "WG14-N2265: مواءمة static_assert مع لغة C++" (ملف PDF) . open-std.org . 2018-07-06. مؤرشف (ملف PDF) من الأصل في 28 مارس 2023.
  33. 1 2 "WG14-N2645: إضافة دعم لتوجيهات المعالجة المسبقة #elifdef و #elifndef" (ملف PDF) . open-std.org . 2020-01-25. مؤرشف (ملف PDF) من الأصل في 28 نوفمبر 2022.
  34. "يضيف GCC 12 دعمًا لتوجيهات #elifdef و #elifndef الجديدة" . phoronix . 12 مايو 2021. مؤرشف من الأصل في 27 ديسمبر 2022.
  35. "WG14-N3017: #embed - آلية تضمين موارد ثنائية قابلة للمسح وسهلة الاستخدام في الأدوات" . open-std.org . 27-06-2022. مؤرشف من الأصل في 24 ديسمبر 2022.
  36. "WG14-N2686: #تحذير" (ملف PDF) . open-std.org . 2022-07-22. مؤرشف (ملف PDF) من الأصل في 28 نوفمبر 2022.
  37. "WG14-N2799: __has_include for C" (ملف PDF) . open-std.org . 30 أغسطس 2021. مؤرشف (ملف PDF) من الأصل في 24 ديسمبر 2022.
  38. "WG14-N2553: الاستعلام عن دعم السمات" (ملف PDF) . open-std.org . 2020-08-04. مؤرشف (ملف PDF) من الأصل في 14 أكتوبر 2022.
  39. "WG14-N3033: حذف الفاصلة وحذف الفاصلة" . open-std.org . 2022-07-20. مؤرشف من الأصل في 27 ديسمبر 2022.
  40. "التسميات في نهاية العبارات المركبة (التوافق مع لغة C)" (ملف PDF) . 2022-01-13.
  41. "WG14-N2554: تحسينات طفيفة على صياغة السمات" (ملف PDF) . open-std.org . 2020-08-04. مؤرشف (ملف PDF) من الأصل في 28 نوفمبر 2022.
  42. "WG14-N2334: السمة المهملة" (ملف PDF) . open-std.org . 22-01-2019. مؤرشف (ملف PDF) من الأصل في 19 أكتوبر 2022.
  43. "WG14-N2408: سمة التراجع" (ملف PDF) . open-std.org . 11 أغسطس 2019. مؤرشف (ملف PDF) من الأصل في 25 ديسمبر 2022.
  44. "WG14-N2270: السمة maybe_unused" (ملف PDF) . open-std.org . 2018-07-06. مؤرشف (ملف PDF) من الأصل في 25 ديسمبر 2022.
  45. "WG14-N2267: سمة nodiscard" (ملف PDF) . open-std.org . 2018-07-06. مؤرشف (ملف PDF) من الأصل في 19 أكتوبر 2022.
  46. "WG14-N2764: خاصية عدم الإرجاع" (ملف PDF) . open-std.org . 2021-06-21. مؤرشف (ملف PDF) من الأصل في 25 ديسمبر 2022.
  47. "WG14-N2557: السماح بالسمات المكررة" (ملف PDF) . open-std.org . 2020-09-01. مؤرشف (ملف PDF) من الأصل في 28 نوفمبر 2022.
  48. "WG14-N2418: إضافة البادئة u8" (ملف PDF) . open-std.org . 2019-09-02. مؤرشف (ملف PDF) من الأصل في 13 يناير 2023.
  49. ما الهدف من استخدام الأحرف الحرفية UTF-8 المقترحة لـ C++17؟؛ Stack Overflow.
  50. "WG14-N2341: ISO/IEC TS 18661-2 - ملحقات الفاصلة العائمة للغة C - الجزء 2: العمليات الحسابية العشرية ذات الفاصلة العائمة" (ملف PDF) . open-std.org . 26 فبراير 2019. مؤرشف (ملف PDF) من الأصل في 21 نوفمبر 2022.
  51. "WG14-N2601: الملحق العاشر - تبادل وأنواع IEC 60559 الموسعة" (ملف PDF) . open-std.org . ١٥ أكتوبر ٢٠٢٠. مؤرشف (ملف PDF) من الأصل في ١٤ أكتوبر ٢٠٢٢.
  52. "WG14-N3018: مُحدِّد constexpr لتعريفات الكائنات" . open-std.org . 2022-07-06. مؤرشف من الأصل في 24 ديسمبر 2022.
  53. "WG14-N2653: char8_t: نوع لأحرف وسلاسل UTF-8 (مراجعة 1)" . open-std.org . 2021-06-04. مؤرشف من الأصل في 27 مايو 2023.
  54. "WG14-N2728: يجب أن تكون سلاسل الأحرف char16_t و char32_t بتنسيق UTF-16 و UTF-32" . open-std.org . 15 مايو 2021. مؤرشف من الأصل في 27 مايو 2023.
  55. "WG14-N3038: تقديم مُحدِّدات فئة التخزين للقيم الحرفية المركبة" . open-std.org . 2022-07-21. مؤرشف من الأصل في 26 نوفمبر 2022.
  56. 1 2 3 "WG14-N2630: تنسيق إدخال/إخراج الأعداد الصحيحة الثنائية" (ملف PDF) . open-std.org . 2021-01-01. مؤرشف (ملف PDF) من الأصل في 14 ديسمبر 2022.
  57. "WG14-N3020: دوال المكتبة القياسية التي تحافظ على المُؤهِّل" (ملف PDF) . open-std.org . 13-06-2022. مؤرشف (ملف PDF) من الأصل في 13 أكتوبر 2022.
  58. "WG14-N2897: memset_explicit()" . open-std.org . 2021-12-27. مؤرشف من الأصل في 25 أكتوبر 2022.
  59. "WG14-N2349: نحو نسخ ودمج السلاسل النصية بكفاءة أكبر" . open-std.org . 2019-03-18. مؤرشف من الأصل في 30 سبتمبر 2022.
  60. "WG14-N2353: strdup() و strndup()" . open-std.org . 2019-03-18. مؤرشف من الأصل في 24 ديسمبر 2022.
  61. "WG14-N2974: محاذاة المؤشر القابلة للاستعلام" (ملف PDF) . open-std.org . 15 أبريل 2022. مؤرشف (ملف PDF) من الأصل في 13 أكتوبر 2022.
  62. "WG14-N2699: إلغاء تخصيص الذاكرة المُقاس" . open-std.org . 2021-03-24.{{cite web}}: CS1 maint: url-status ( link )
  63. 1 2 3 4 5 6 7 8 9 10 11 "WG14-N3022: أدوات البت الحديثة" . open-std.org . 2022-07-06. مؤرشف من الأصل في 24 ديسمبر 2022.
  64. "WG14-N2833: إضافة timegm() كجزء إلزامي من time.h" . open-std.org . 2021-10-07. مؤرشف من الأصل في 1 ديسمبر 2021.
  65. انظر N3096 ​​§ B.11 للحصول على نظرة عامة مفيدة. تمت إضافة الوظائف في وثائق منفصلة: N2488، وإصداراتها المحدثة، ومراجعها.
  66. "WG14-N2940: إزالة الثلاثيات؟!" (ملف PDF) . open-std.org . 2022-03-02. مؤرشف (ملف PDF) من الأصل في 26 أكتوبر 2022.
  67. "WG14-N2432: اقتراح إزالة دعم تعريفات الدوال باستخدام قوائم المعرفات" (ملف PDF) . open-std.org . 25 سبتمبر 2019. مؤرشف (ملف PDF) من الأصل في 27 ديسمبر 2022.
  68. "WG14-N2841: لا يُسمح بتعريف الدوال بدون نماذج أولية" . open-std.org . 10-10-2021. مؤرشف من الأصل في 12 نوفمبر 2022.
  69. "WG14-N2412: تمثيل الإشارة بنظام المتمم الثنائي" (ملف PDF) . open-std.org . 11 أغسطس 2019. مؤرشف (ملف PDF) من الأصل في 27 ديسمبر 2022.
  70. "WG14-N2993: جعل *_HAS_SUBNORM قديمًا" . open-std.org . 2022-06-06. مؤرشف من الأصل في 5 ديسمبر 2022.
  71. "ملاحظات إصدار GCC 9" . مشروع جنو . مؤرشف من الأصل في 27 ديسمبر 2022.
  72. "Clang 9.0 - إضافة وضع لغة جديد لـ C2x" . مستودع مشروع LLVM . 14 مايو 2019. مؤرشف من الأصل في 27 ديسمبر 2022.
  73. "Pelles C - تغييرات رئيسية بين الساعة 10:00 و 11:00" . smorgasbordet.com . مؤرشف من الأصل بتاريخ 27 ديسمبر 2022.
  74. "سلسلة إصدارات GCC 15" . مشروع جنو . تم الاطلاع عليه بتاريخ 13 يوليو 2025 .
  75. 1 2 3 "N3150 - تقرير المحرر، اجتماع ما بعد يناير-فبراير 2023" . open-std.org . 2023-07-08.
  76. 1 2 3 4 "N3221 - تقرير المحرر، بعد اجتماع يناير 2024" . open-std.org . 2024-02-15.

للمزيد من القراءة

  • ISO/IEC 9899:2024 (المعيار الرسمي C23)؛ ISO ؛ 2024. (متوفر ولكن ليس مجاناً)
  • N3096 ​​(آخر مسودة عمل متاحة مجاناً قبل C23)؛ WG14؛ أبريل 2023. (تنزيل مجاني)
  • N3149 (مسودة عمل لمعيار C23)؛ WG14؛ يوليو 2023. (غير متاح للجمهور)
  • N3219 ( المسودة ISO/IEC 9899:2023 DIS )؛ فريق العمل 14؛ فبراير 2024. (مسودة ISO متاحة ولكنها ليست مجانية)
  • N3220 (المسودة الأولى بعد C23؛ تختلف عن مسودة المعيار N3219 في حاشية واحدة فقط)؛ WG14؛ فبراير 2024. (تنزيل مجاني)