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