لغة سي++

لغة C++ هي لغة برمجة عالية المستوى ومتعددة الأغراض ، ابتكرها عالم الحاسوب الدنماركي بيارن ستروستروب . صدرت لأول مرة عام 1985 كامتداد للغة البرمجة C ، مضيفةً ميزات البرمجة الكائنية (OOP). ومنذ ذلك الحين، توسعت بشكل كبير مع مرور الوقت، مضيفةً المزيد من ميزات البرمجة الكائنية وغيرها من الميزات؛ اعتبارًا من عام 1997مع توحيد معايير C++98، أُضيفت إلى لغة C++ ميزات وظيفية ، بالإضافة إلى أدوات لمعالجة الذاكرة على مستوى منخفض لأنظمة مثل الحواسيب الصغيرة أو لإنشاء أنظمة تشغيل مثل لينكس أو ويندوز ، ولاحقًا ظهرت ميزات مثل البرمجة العامة (من خلال استخدام القوالب ). تُنفذ C++ عادةً كلغة مُجمّعة ، ويُوفر العديد من الموردين مُجمّعات C++ ، بما في ذلك مؤسسة البرمجيات الحرة ، وLLVM ، ومايكروسوفت ، وإنتل ، وإمباركاديرو ، وأوراكل ، وآي بي إم . [ 16 ]

صُممت لغة C++ مع مراعاة برمجة الأنظمة والبرمجيات المدمجة ذات الموارد المحدودة والأنظمة الكبيرة، مع التركيز على الأداء والكفاءة ومرونة الاستخدام كأبرز سمات تصميمها. [ 17 ] كما وُجد أن C++ مفيدة في العديد من السياقات الأخرى، حيث تتمثل نقاط قوتها الرئيسية في البنية التحتية للبرمجيات والتطبيقات ذات الموارد المحدودة، [ 17 ] بما في ذلك تطبيقات سطح المكتب ، وألعاب الفيديو ، والخوادم (مثل التجارة الإلكترونية ، ومحركات البحث على الويب ، وقواعد البيانات )، والتطبيقات الحساسة للأداء (مثل مقاسم الهاتف أو المركبات الفضائية ). [ 18 ]

تُعتبر لغة C++ معيارًا مُعتمدًا من قِبل المنظمة الدولية للمعايير (ISO)، وقد تمّ اعتماد أحدث إصدار من معيارها ونشره في أكتوبر 2024 تحت اسم ISO/IEC 14882:2024 (المعروفة اختصارًا باسم C++23 ). [ 19 ] وقد تمّ توحيد لغة البرمجة C++ مبدئيًا في عام 1998 تحت اسم ISO/IEC 14882:1998 ، ثمّ عُدّل لاحقًا بمعايير C++03 و C++11 و C++14 و C++17 و C++20 . وقد حلّ معيار C++23 محلّ هذه المعايير السابقة ، مُضيفًا ميزات جديدة ومكتبة قياسية مُوسّعة . قبل التوحيد الأولي في عام 1998، كان ستروستروب يُطوّر لغة C++ في مختبرات بيل منذ عام 1979 كامتداد للغة C؛ إذ كان يطمح إلى لغة فعّالة ومرنة تُشبه لغة C، وتُوفّر في الوقت نفسه ميزات عالية المستوى لتنظيم البرامج. [ 20 ] منذ عام 2012، يتم إصدار لغة C++ كل ثلاث سنوات [ 21 ] مع كون C++29 المعيار المخطط له التالي. [ 22 ]

تاريخ

بيارن ستروستروب ، مبتكر لغة البرمجة C++، في مكتبه بشركة AT&T في نيوجيرسي، حوالي عام 2000 .

في عام 1979، بدأ بيارن ستروستروب ، عالم الكمبيوتر الدنماركي ، العمل على "لغة C مع الفئات ، وهي اللغة السابقة للغة C++. [ 23 ] نشأ الدافع وراء إنشاء لغة جديدة من تجربة ستروستروب في البرمجة لأطروحته للدكتوراه. وجد ستروستروب أن لغة سيمولا تتمتع بميزات مفيدة جدًا لتطوير البرمجيات الضخمة، لكنها كانت بطيئة جدًا للاستخدام العملي، بينما كانت لغة BCPL سريعة ولكنها منخفضة المستوى جدًا بحيث لا تناسب تطوير البرمجيات الضخمة. عندما بدأ ستروستروب العمل في مختبرات AT&T Bell ، واجه مشكلة تحليل نواة نظام UNIX فيما يتعلق بالحوسبة الموزعة . متذكرًا تجربته في الدكتوراه، شرع ستروستروب في تحسين لغة C بميزات شبيهة بلغة سيمولا. [ 24 ] تم اختيار لغة C لأنها لغة عامة الأغراض وسريعة وقابلة للنقل وشائعة الاستخدام. بالإضافة إلى تأثيرات لغة C ولغة سيمولا، أثرت لغات أخرى على هذه اللغة الجديدة، بما في ذلك ALGOL 68 و Ada و CLU و ML . [ 25 ]

في البداية، أضافت "C with Classes" الخاصة بـ Stroustrup ميزات إلى مترجم لغة C، Cpre، بما في ذلك الفئات ، والفئات المشتقة ، والتصنيف القوي ، والتضمين ، والوسائط الافتراضية . [ 26 ]

اختبار قصير حول ميزات C++11 يُعقد في باريس عام 2015

في عام ١٩٨٢، بدأ ستروستروب بتصميم نسخة مُحسّنة ومُوسّعة من لغة C with Classes، باستخدام تقنية المُترجمات التقليدية. [ ٢٧ ] سُمّيت اللغة لفترة وجيزة C84 قبل اعتماد اسم C++؛ وقد اقترح ريك ماسيتي هذا الاسم، وهو يُشير إلى ++مُعامل الزيادة في لغة C. [ ٢٧ ] [ ٢٨ ] تضمنت اللغة الناتجة الدوال الافتراضية ، وتحميل الدوال والمُعاملات الزائد ، والمراجع ، constوتحسين فحص الأنواع ، وتخصيص الذاكرة الحرة الذي يُتحكّم به المستخدم ( new/ delete)، والتعليقات أحادية السطر على غرار BCPL //. [ ٢٧ ] كما صمّم ستروستروب ونفّذ Cfront ، وهي واجهة مُترجم C++ ، بين ربيع عام ١٩٨٢ وصيف عام ١٩٨٣. [ ٢٧ ]

في عام 1984، قام ستروستروب بتنفيذ أول مكتبة لإدخال/إخراج البيانات المتدفقة. وقد اقترح دوغ ماكلروي [ 4 ] فكرة توفير عامل إخراج بدلاً من دالة إخراج مسماة (والذي كان قد اقترح سابقاً أنابيب يونكس ).

في عام 1985، صدرت الطبعة الأولى من كتاب "لغة البرمجة سي++" ، والذي أصبح المرجع الأساسي لهذه اللغة، إذ لم يكن هناك معيار رسمي لها آنذاك. [ 29 ] وصدر أول تطبيق تجاري للغة سي++ في أكتوبر من العام نفسه. [ 23 ]

في عام ١٩٨٩، صدرت لغة البرمجة C++ 2.0، تلتها الطبعة الثانية المحدثة من كتاب "لغة برمجة C++" في عام ١٩٩١. [ ٣٠ ] تضمنت الميزات الجديدة في الإصدار 2.0 الوراثة المتعددة، والفئات المجردة، ودوال الأعضاء الثابتة، ودوال الأعضاء الثابتة (const) ، والأعضاء المحمية. وفي عام ١٩٩٠، نُشر "دليل C++ المرجعي المشروح" . أصبح هذا العمل أساسًا للمعيار المستقبلي. وشملت الإضافات اللاحقة للميزات القوالب ، والاستثناءات ، ومساحات الأسماء ، والتحويلات الجديدة ، ونوع البيانات المنطقي (Boolean) .

في عام 1998، تم إصدار C++98، مما أدى إلى توحيد اللغة، وتم إصدار تحديث طفيف ( C++03 ) في عام 2003.

بعد C++98، تطورت لغة C++ ببطء نسبيًا حتى عام 2011، حين صدر معيار C++11 ، الذي أضاف العديد من الميزات الجديدة، ووسع المكتبة القياسية، ووفر مزيدًا من التسهيلات لمبرمجي C++. بعد تحديث C++14 البسيط الذي صدر في ديسمبر 2014، أُضيفت العديد من الميزات الجديدة في C++17 . [ 31 ] بعد الانتهاء من وضع الصيغة النهائية لمعيار C++20 في فبراير 2020، [ 32 ] تمت الموافقة على مسودة المعيار في 4 سبتمبر 2020، ونُشرت رسميًا في 15 ديسمبر 2020. [ 33 ] [ 34 ]

في 3 يناير 2018، أُعلن عن فوز ستروستروب بجائزة تشارلز ستارك دريبر للهندسة لعام 2018، "لتصميمه وتطويره لغة البرمجة C++". [ 35 ]

في ديسمبر 2022، احتلت لغة C++ المرتبة الثالثة في مؤشر TIOBE ، متجاوزةً لغة Java لأول مرة في تاريخ المؤشر. اعتبارًا من نوفمبر 2024 وتحتل اللغة المرتبة الثانية بعد لغة بايثون ، بينما تحتل لغة جافا المرتبة الثالثة. [ 36 ]

في مارس 2025، وجّه ستروستروب نداءً إلى مجتمع اللغة للدفاع عنها. ولأن اللغة تسمح بإدارة الذاكرة يدويًا، فقد تُدخَل أخطاءٌ تُمثّل مخاطر أمنية، مثل تجاوز سعة المخزن المؤقت، في البرامج عند إساءة استخدامها عن غير قصد من قِبَل المبرمج. [ 37 ]

أصل الكلمة

بحسب ستروستروب، "يشير الاسم إلى الطبيعة التطورية للتغييرات من لغة C." [ 38 ] يُنسب هذا الاسم إلى ريك ماسيتي (منتصف عام 1983) [ 26 ] ، وقد استُخدم لأول مرة في ديسمبر 1983. عندما سُئل ماسيتي بشكل غير رسمي عام 1992 عن سبب التسمية، أشار إلى أنها كانت من باب الدعابة. يأتي الاسم من عامل C (الذي يزيد قيمة المتغير ) ومن ++اصطلاح تسمية شائع يستخدم علامة " + " للدلالة على برنامج حاسوبي مُحسَّن .

خلال فترة تطوير لغة C++، كانت اللغة يشار إليها باسم "لغة C الجديدة" و "لغة C مع الفئات" [ 26 ] [ 39 ] قبل أن تحصل على اسمها النهائي.

فلسفة

طوال حياة لغة C++، تم توجيه تطويرها وتطورها من خلال مجموعة من المبادئ: [ 24 ]

  • يجب أن يكون مدفوعاً بمشاكل حقيقية، وينبغي أن تكون ميزاته مفيدة على الفور في برامج العالم الحقيقي.
  • ينبغي أن تكون كل ميزة قابلة للتنفيذ (مع وجود طريقة واضحة إلى حد معقول للقيام بذلك).
  • ينبغي أن يكون للمبرمجين حرية اختيار أسلوب البرمجة الخاص بهم، وينبغي أن يدعم C++ هذا الأسلوب بشكل كامل.
  • إن السماح بميزة مفيدة أهم من منع كل إساءة استخدام محتملة للغة C++.
  • ينبغي أن يوفر ذلك تسهيلات لتنظيم البرامج في أجزاء منفصلة ومحددة جيدًا، ويوفر تسهيلات لدمج الأجزاء المطورة بشكل منفصل.
  • لا توجد انتهاكات ضمنية لنظام النوع (ولكن يُسمح بالانتهاكات الصريحة؛ أي تلك التي يطلبها المبرمج صراحةً).
  • يجب أن تتمتع الأنواع التي ينشئها المستخدم بنفس الدعم والأداء الذي تتمتع به الأنواع المدمجة.
  • لا ينبغي أن تؤثر الميزات غير المستخدمة سلبًا على الملفات التنفيذية التي تم إنشاؤها (على سبيل المثال، انخفاض الأداء).
  • لا ينبغي أن تكون هناك لغة أدنى من لغة C++ (باستثناء لغة التجميع ).
  • ينبغي أن تعمل لغة C++ جنبًا إلى جنب مع لغات البرمجة الأخرى الموجودة ، بدلاً من تعزيز بيئة برمجة منفصلة وغير متوافقة خاصة بها .
  • إذا كانت نية المبرمج غير معروفة، فاسمح له بتحديدها من خلال توفير تحكم يدوي.

التقييس

معايير لغة C++
سنةمعيار ISO/IECاسم غير رسمي
199814882:1998 [ 40 ]C++98
200314882:2003 [ 41 ]C++03
201114882:2011 [ 42 ]C++11 ، C++0x
201414882:2014 [ 43 ]C++14 ، C++1y
201714882:2017 [ 44 ]C++17 ، C++1z
202014882:2020 [ 45 ]C++20 ، C++2a
202414882:2024 [ 19 ]C++23 ، C++2b
سيتم الإعلان عنه لاحقاًC++26 ، C++2c

تُعتمد لغة C++ من قِبل مجموعة عمل تابعة للمنظمة الدولية للمعايير (ISO) تُعرف باسم JTC1/SC22/WG21 . تعقد هذه المجموعة ثلاثة اجتماعات سنوية، مدة كل منها أسبوع. [ 46 ] وقد نشرت حتى الآن سبعة تنقيحات لمعيار C++، وتعمل حاليًا على التنقيح التالي، C++26 .

مشهد من اجتماع لجنة معايير لغة البرمجة C++ في ستوكهولم عام 1996

في عام 1998، قامت مجموعة عمل المنظمة الدولية للمقاييس (ISO) بتوحيد لغة C++ لأول مرة تحت مسمى ISO/IEC 14882:1998 ، والمعروفة بشكل غير رسمي باسم C++98 . وفي عام 2003، نشرت المنظمة نسخة جديدة من معيار C++ تحت مسمى ISO/IEC 14882:2003 ، والتي عالجت المشكلات التي تم تحديدها في C++98.

أُشير إلى المراجعة الرئيسية التالية للمعيار بشكل غير رسمي باسم "C++0x"، ولكنها لم تُصدر حتى عام 2011. [ 47 ] تضمنت C++11 (14882:2011) العديد من الإضافات إلى كل من اللغة الأساسية والمكتبة القياسية. [ 42 ]

في عام 2014، صدرت لغة C++14 (المعروفة أيضًا باسم C++1y) كإضافة صغيرة للغة C++11، وتضمنت بشكل أساسي إصلاحات للأخطاء وتحسينات طفيفة. [ 48 ] اكتملت إجراءات التصويت على مسودة المعيار الدولي في منتصف أغسطس 2014. [ 49 ]

بعد C++14، تم الانتهاء من مراجعة رئيسية C++17 ، والمعروفة بشكل غير رسمي باسم C++1z، من قبل لجنة ISO C++ في منتصف يوليو 2017 وتمت الموافقة عليها ونشرها في ديسمبر 2017. [ 50 ]

وكجزء من عملية التقييس، تنشر المنظمة الدولية للمقاييس (ISO) أيضاً تقارير ومواصفات فنية :

  • ISO/IEC TR 18015:2006 [ 51 ] بشأن استخدام لغة C++ في الأنظمة المدمجة وبشأن الآثار المترتبة على أداء لغة C++ وميزات المكتبة،
  • ISO/IEC TR 19768:2007 [ 52 ] (المعروف أيضًا باسم التقرير الفني C++ 1 ) حول ملحقات المكتبة المدمجة في الغالب في C++11 ،
  • ISO/IEC TR 29124:2010 [ 53 ] حول الدوال الرياضية الخاصة، المدمجة في C++17 ،
  • ISO/IEC TR 24733:2011 [ 54 ] حول الحساب العشري ذي الفاصلة العائمة ،
  • ISO/IEC TS 18822:2015 [ 55 ] حول مكتبة نظام الملفات القياسية، المدمجة في C++17 ،
  • ISO/IEC TS 19570:2015 [ 56 ] حول الإصدارات المتوازية من خوارزميات المكتبة القياسية، المدمجة في C++17 ،
  • ISO/IEC TS 19841:2015 [ 57 ] بشأن ذاكرة المعاملات البرمجية ،
  • ISO/IEC TS 19568:2015 [ 58 ] حول مجموعة جديدة من ملحقات المكتبة، والتي تم دمج بعضها بالفعل في C++17 ،
  • ISO/IEC TS 19217:2015 [ 59 ] حول مفاهيم C++ ، المدمجة في C++20 ،
  • ISO/IEC TS 19571:2016 [ 60 ] بشأن ملحقات المكتبة للتزامن، والتي تم دمج بعضها بالفعل في C++20 ،
  • ISO/IEC TS 19568:2017 [ 61 ] حول مجموعة جديدة من ملحقات المكتبات ذات الأغراض العامة،
  • ISO/IEC TS 21425:2017 [ 62 ] بشأن ملحقات المكتبة للنطاقات، المدمجة في C++20 ،
  • ISO/IEC TS 22277:2017 [ 63 ] حول الروتينات الفرعية، المدمجة في C++20 ،
  • ISO/IEC TS 19216:2018 [ 64 ] حول مكتبة الشبكات،
  • ISO/IEC TS 21544:2018 [ 65 ] حول الوحدات النمطية المدمجة في C++20 ،
  • ISO/IEC TS 19570:2018 [ 66 ] بشأن مجموعة جديدة من امتدادات المكتبة للتوازي
  • ISO/IEC TS 23619:2021 [ 67 ] بشأن الامتدادات الجديدة للبرمجة الانعكاسية (الانعكاس)،
  • المعيار ISO/IEC TS 9922:2024 [ 68 ] بشأن مجموعة جديدة من امتدادات التزامن، و
  • ISO/IEC TS 19568:2024 [ 69 ] حول مجموعة جديدة أخرى من ملحقات المكتبة.

المزيد من المواصفات الفنية قيد التطوير وتنتظر الموافقة.

لغة

تتألف لغة C++ من عنصرين رئيسيين: ربط مباشر بميزات الأجهزة، مُستمد أساسًا من مجموعة C الفرعية، وتجريدات خالية من التكاليف الإضافية مبنية على هذا الربط. يصف ستروستروب لغة C++ بأنها "لغة برمجة تجريدية خفيفة الوزن [مصممة] لبناء واستخدام تجريدات فعالة وأنيقة"؛ [ 17 ] و"يُعدّ توفير كلٍ من الوصول إلى الأجهزة والتجريد أساس لغة C++. والكفاءة في ذلك هي ما يميزها عن اللغات الأخرى." [ 70 ]

ترث لغة C++ معظم قواعد لغة C. برنامج "مرحباً بالعالم" المتوافق مع معيار C هو أيضاً برنامج "مرحباً بالعالم" صالح في C++. فيما يلي مقتطف من نسخة بيارن ستروستروب لبرنامج " مرحباً بالعالم" الذي يستخدم خاصية التدفق في مكتبة C++ القياسية لكتابة رسالة إلى المخرج القياسي : [ 71 ] [ 72 ] [ c ]

#include <iostream>int main () {std :: cout << "Hello, world! \n " ;}

منذ إصدار C++23 ، ومع إدخال وظائف std::print ووحدة std ، يمكن التعبير عن ذلك بشكل أقل إسهاباً على النحو التالي:

استيراد std ؛int main () {std :: println ( "Hello, world!" );}

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

مسودة "ورقة العمل" المعيارية التي تمت الموافقة عليها باسم C++98؛ تم تخصيص نصف حجمها لمكتبة C++ القياسية.

يحدد معيار C++ كلاً من اللغة الأساسية والمكتبة القياسية . وتصف بنود المكتبة محتوياتها، وكيفية استخدامها في برنامج C++ سليم البنية، والمتطلبات المفروضة على التطبيقات المتوافقة. [ 73 ]

تُصنَّف المكتبة القياسية إلى مجالاتٍ مثل دعم اللغة، والتشخيص، وإدارة الذاكرة ، والبرمجة الوصفية ، والأدوات العامة، والحاويات ، والمكررات ، والنطاقات ، والخوارزميات ، والسلاسل النصية ، ومعالجة النصوص ، والحسابات العددية ، والوقت، والإدخال/الإخراج ، ودعم التزامن . [ 73 ] كما تُوفِّر المكتبة القياسية إمكانيات مكتبة C القياسية من خلال رؤوس C++ مثل ` <namespace> <cstdio>` و` <namespace <cstdlib>>`؛ باستثناء الأسماء المُعرَّفة كوحدات ماكرو في C، تُوضع هذه التصريحات في مساحة الاسم `<namespace>std `. [ 74 ]

تُتاح وظائف المكتبة عادةً بتضمين ملفات رأسية قياسية، على سبيل المثال . ومنذ C++20، أصبح من الممكن استيراد ملفات الرأس القياسية القابلة للاستيراد كوحدات رأسية. أضافت C++23 وحدات المكتبة القياسية المسماة ، وتُصدّر التصريحات في مساحة الاسم ، بينما تُصدّر أيضًا تصريحات مساحة الاسم العامة المقابلة لوظائف مكتبة C. [ 75 ]#include<vector>stdstd.compatstdstdstd.compat

كان لمكتبة القوالب القياسية (STL)، وهي مكتبة برمجة عامة اقترحها ألكسندر ستيبانوف ومينغ لي على لجنة معايير لغة C++ عام 1994، تأثير كبير على المكتبة القياسية. أصبح نموذجها للحاويات والمكررات والخوارزميات العامة جزءًا من مكتبة C++ القياسية، على الرغم من أن المكتبة القياسية تتضمن أيضًا العديد من الميزات الأخرى، مثل الإدخال/الإخراج، والتوطين، والتشخيص، ومجموعة فرعية من مكتبة C. [ 76 ] [ 77 ]

إرشادات لغة C++ الأساسية

تُعدّ إرشادات C++ الأساسية [ 78 ] مبادرةً قادها ستروستروب وهيرب سوتر، منسق ورئيس فريق عمل C++ التابع لمنظمة ISO، لمساعدة المبرمجين على كتابة "C++ الحديثة" باستخدام أفضل الممارسات لمعايير اللغة C++11 والإصدارات الأحدث، ولمساعدة مطوري المترجمات وأدوات التحقق الثابت على وضع قواعد لاكتشاف ممارسات البرمجة السيئة. والهدف الرئيسي هو كتابة C++ بكفاءة واتساق، مع مراعاة سلامة الأنواع والموارد. ومع ذلك، فإن هذه الإرشادات غير معتمدة من قبل لجنة معايير C++ التابعة لمنظمة ISO، ولا تُمثّل إجماع اللجنة. [ 79 ]

تم الإعلان عن المبادئ التوجيهية الأساسية [ 80 ] في الكلمة الافتتاحية الرئيسية في مؤتمر CPPCon 2015.

تُرفق الإرشادات بمكتبة دعم الإرشادات (GSL)، وهي مكتبة تحتوي على ملفات رأسية فقط، وتضم أنواعًا ووظائف لتنفيذ الإرشادات الأساسية وأدوات فحص ثابتة لفرض قواعد الإرشادات. [ 81 ] يُعد تطبيق مايكروسوفت أحد أكبر تطبيقات هذه المكتبة. [ 82 ] وقد دُمجت العديد من الميزات الموجودة في مكتبة دعم الإرشادات لاحقًا في اللغة، مثل std::byteالمؤشرات الذكية std::span. [ 82 ]

التوافق

لإتاحة مزيد من الحرية لمطوري المترجمات، قررت لجنة معايير لغة C++ عدم فرض قيود على تنفيذ معالجة أسماء المتغيرات ، ومعالجة الاستثناءات ، وغيرها من الميزات الخاصة بكل تطبيق. لكن من سلبيات هذا القرار توقع عدم توافق الشيفرة البرمجية الناتجة عن المترجمات المختلفة . مع ذلك، تُبذل جهود لتوحيد معايير المترجمات لأجهزة أو أنظمة تشغيل محددة . على سبيل المثال، واجهة التطبيق الثنائية (ABI) للغة C++ الخاصة بمعالج Itanium مستقلة عن المعالج (على الرغم من اسمها) ويتم تنفيذها بواسطة GCC وClang. [ 83 ]

مع ج

غالبًا ما يُنظر إلى لغة C++ على أنها مجموعة فرعية من لغة C، لكن هذا ليس صحيحًا تمامًا. [ 84 ] يمكن بسهولة تحويل معظم أكواد C إلى أكواد C++ لتتوافق مع متطلبات C، ولكن هناك بعض الاختلافات التي قد تجعل بعض أكواد C الصحيحة غير صالحة أو تتصرف بشكل مختلف في C++. على سبيل المثال، تسمح لغة C بالتحويل الضمني من نوع إلى أنواع مؤشرات أخرى، بينما لا تسمح C++ بذلك (لأسباب تتعلق بسلامة الأنواع). كذلك، تُعرّف C++ العديد من الكلمات المفتاحية الجديدة، مثل `input` و`input` ، والتي يمكن استخدامها كمعرّفات (مثل أسماء المتغيرات) في برنامج C.void*newclass

أُزيلت بعض أوجه عدم التوافق في مراجعة عام 1999 لمعيار لغة C ( C99 )، التي تدعم الآن ميزات C++ مثل التعليقات السطرية ( //) والتصريحات المدمجة مع التعليمات البرمجية. من ناحية أخرى، قدم C99 عددًا من الميزات الجديدة التي لم تكن C++ تدعمها، والتي كانت غير متوافقة أو زائدة في C++، مثل المصفوفات ذات الطول المتغير ، وأنواع الأعداد المركبة الأصلية (مع ذلك، توفر الفئة في مكتبة C++ القياسية وظائف مماثلة، وإن لم تكن متوافقة مع التعليمات البرمجية)، والمُهيئات المُخصصة، والقيم الحرفية المركبة ، والكلمة المفتاحية . [ 85 ] أُدرجت بعض الميزات التي قدمها C99 في الإصدار اللاحق من معيار C++، وهو C++11 (من بين تلك التي لم تكن زائدة). [ 86 ] [ 87 ] [ 88 ] مع ذلك، يُدخل معيار C++11 أوجه عدم توافق جديدة، مثل منع إسناد قيمة حرفية من نوع سلسلة نصية إلى مؤشر حرف، وهو أمر لا يزال صالحًا في C.std::complexrestrict

لدمج أكواد C و C++، يجب تعريف أي دالة أو تصريحها المراد استدعاؤها أو استخدامها في كل من C و C++ باستخدام ربط C، وذلك بوضعها داخل كتلة `<function>`. لا يجوز لهذه الدالة الاعتماد على ميزات تعتمد على تغيير أسماء الدوال (أي تحميل الدوال الزائد).extern"C"{/*...*/}

التجميع المباشر

تستخدم البرامج المطورة بلغة C أو C++ غالبًا لغة التجميع المضمنة للاستفادة من وظائفها منخفضة المستوى، وسرعتها العالية، وتحكمها المُحسّن مقارنةً بلغات البرمجة عالية المستوى [ 89 ] [ 90 وذلك عندما يكون تحسين الأداء أمرًا بالغ الأهمية. تدعم لغة C++ تضمين لغة التجميع باستخدام تعريفات asm [ 91 ] ، ولكن توافق لغة التجميع المضمنة يختلف اختلافًا كبيرًا بين المُترجمات والمعماريات. على عكس ميزات لغات البرمجة عالية المستوى مثل بايثون أو جافا ، يعتمد كود التجميع بشكل كبير على المعالج الأساسي وتنفيذ المُترجم.

تختلف الاختلافات بين المترجمات

تُنفذ مُترجمات لغة C++ المختلفة التجميع المضمن بطرق متباينة.

  • يستخدم كل من GCC ( مجموعة مترجمات GNU ) و Clang [ 92 ] صيغة التجميع المضمنة الموسعة لـ GCC، باستخدام الكلمة __asm__المفتاحية بدلاً من asmعند كتابة التعليمات البرمجية التي يمكن تجميعها باستخدام الخيارات ، مما يسمح بتحديد معاملات الإدخال/الإخراج والسجلات التي يتم تغييرها. وقد تم اعتماد هذا النهج في أماكن أخرى، بما في ذلك مترجمات Intel [ 93 ] وIBM [ 94 ] .-ansi-std
  • MSVC ( Microsoft Visual C++ ): تم دمج المجمع المضمن في المترجم. كان التجميع المضمن مدعومًا سابقًا عبر __asmالكلمة المفتاحية، ولكن تمت إزالة هذا الدعم في وضع 64 بت، مما يتطلب وحدات .asm منفصلة بدلاً من ذلك. [ 95 ]
  • TI ARM Clang والمترجمات المضمنة: [ 96 ] تسمح بعض مترجمات الأنظمة المضمنة، مثل TI Arm Clang من شركة Texas Instruments، بالتجميع المضمن ولكنها تفرض قواعد أكثر صرامة لتجنب التعارضات مع اتفاقيات التسجيل واتفاقيات الاستدعاء.

التوافق بين لغة C++ ولغة التجميع

توفر لغة C++ طريقتين أساسيتين لدمج كود التجميع: ملفات التجميع المستقلة، حيث يُكتب كود التجميع بشكل منفصل ويُربط بكود C++. [ 97 ] والتجميع المضمن ، حيث يُدمج كود التجميع داخل كود C++ باستخدام امتدادات خاصة بالمترجم.

انظر أيضاً

ملحوظات

  1. لفكرة الروتينات الفرعية غير المكدسة في C++20.
  2. يُنطق / ˈ siː p l ʌ s p l ʌ s / SEE PLUSS PLUSS ويُختصر أحيانًا إلى CPP أو CXX .
  3. هذا الكود مقتبس من صفحة تصحيحات بيارن ستروستروب (صفحة 633). يتناول فيها استخدام'\n'بدلاً منstd::endl. انظر أيضًا: هل يمكنني كتابة "void main()"؟ (مؤرشف في 2 يوليو 2020 على موقع Wayback Machine) للاطلاع على شرح القيمة الضمنيةreturn 0;فيmainالدالة. هذه القيمة الضمنية غير متاحة في الدوال الأخرى.

مراجع

  1. وايت تشيلدرز وآخرون  (26 يونيو 2024). "P2996R4 - الانعكاس لـ C++26" . isocpp.org . WG21.
  2. "N5032: مسودة عمل، لغات البرمجة - C++" (ملف PDF) . ISO/IEC JTC 1/SC 22. 15 ديسمبر 2025. تاريخ الاطلاع: 29 أبريل 2026 .
  3. "نظرة عامة على الوحدات في لغة C++" . مايكروسوفت. 24 أبريل 2023.
  4. 1 2 3 4 5 6 ستروستروب، بيارن (1996). "تاريخ لغة C++: 1979-1991". تاريخ لغات البرمجة - الجزء الثاني . ACM . الصفحات 699-769 . doi : 10.1145/234286.1057836 . 
  5. ستروستروب، بيارن (16 ديسمبر 2021). "C++20: السعي لتحقيق أهداف C++ - بيارن ستروستروب - مؤتمر CppCon 2021" . CppCon. مؤرشف من الأصل في 30 ديسمبر 2021. تم الاطلاع عليه في 30 ديسمبر 2021 .
  6. ستروستروب، بيارن (12 يونيو 2020). "الازدهار في عالم مزدحم ومتغير: لغة C++ 2006-2020" . وقائع مؤتمر ACM حول لغات البرمجة . 4 (HOPL). رابطة آلات الحوسبة (ACM): 1-168 . doi : 10.1145/3386320 . ISSN 2475-1421 . S2CID 219603741 .  
  7. نوغلر، ديفيد (مايو 2007). "سي شارب 2.0 لمبرمجي سي++ وجافا: ورشة عمل المؤتمر". مجلة علوم الحاسوب في الكليات . 22 (5). على الرغم من تأثر لغة سي شارب بشكل كبير بلغة جافا، إلا أنها تأثرت أيضًا بشكل كبير بلغة سي++، ويُفضل اعتبارها امتدادًا لكلتا اللغتين.
  8. "مواصفات الكنيسة (شكر وتقدير)" (ملف PDF) . شركة كراي. 1 أكتوبر 2015. مؤرشف (ملف PDF) من الأصل في 24 يونيو 2018. تم الاطلاع عليه في 14 يناير 2016 .
  9. فوجوس، مايكل. "أسئلة وأجوبة مع ريتش هيكي" . مجلة كود الفصلية . مؤرشف من الأصل في 11 يناير 2017. تم الاطلاع عليه في 11 يناير 2017 .
  10. هاري إتش. تشودري (28 يوليو 2014). "اجتياز مقابلة برمجة جافا :: أكثر من 2000 سؤال وجواب في مقابلات جافا" . مؤرشف من الأصل في 27 مايو 2021. تم الاطلاع عليه في 29 مايو 2016 . 
  11. روجر بون (1 مايو 2017). "توسيع نطاق JS++: التجريد والأداء وسهولة القراءة" . مؤرشف من الأصل في 11 مايو 2020. تم الاطلاع عليه في 21 أبريل 2020 .
  12. "تطور لغة الامتداد: تاريخ لغة لوا" . www.lua.org . تم الاطلاع عليه بتاريخ 4 يناير 2023 .
  13. "أسئلة وأجوبة حول لغة برمجة نيم" . مؤرشف من الأصل بتاريخ 11 يوليو 2017. تم الاطلاع عليه بتاريخ 21 أبريل 2020 .
  14. "9. الفئات - وثائق بايثون 3.6.4" . docs.python.org . مؤرشف من الأصل بتاريخ 23 أكتوبر 2012. تم الاطلاع عليه بتاريخ 9 يناير 2018 .
  15. "التأثيرات - مرجع لغة Rust" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 4 يناير 2023 .
  16. ستروستروب، بيارن (1997). "1". لغة البرمجة سي++ ( الطبعة الثالثة). أديسون-ويسلي. ISBN  0-201-88954-4. OCLC 59193992 . 
  17. 1 2 3 ستروستروب، ب. (6 مايو 2014). "محاضرة: جوهر لغة C++. جامعة إدنبرة" . يوتيوب . مؤرشف من الأصل في 28 أبريل 2015. تم الاطلاع عليه في 12 يونيو 2015 .
  18. ستروستروب، بيارن (17 فبراير 2014). "تطبيقات C++" . stroustrup.com . مؤرشف من الأصل في 4 أبريل 2021. تم الاطلاع عليه في 5 مايو 2014 .
  19. 1 2 "ISO/IEC 14882:2024" . المنظمة الدولية للتوحيد القياسي . تم الاطلاع عليه بتاريخ 21 أكتوبر 2020 .
  20. "الصفحة الرئيسية لبيارن ستروستروب" . www.stroustrup.com . مؤرشف من الأصل بتاريخ 14 مايو 2019. تم الاطلاع عليه بتاريخ 15 مايو 2013 .
  21. "جدول زمني لـ C++ IS" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 10 أغسطس 2020. تم الاطلاع عليه بتاريخ 9 أغسطس 2020 .
  22. "C++29 - cppreference.com" . cppreference.com . تم الاطلاع عليه بتاريخ 10 يوليو 2026 .
  23. ١ ٢ ستروستروب، بيارن (٧ مارس ٢٠١٠). "أسئلة وأجوبة بيارن ستروستروب: متى تم اختراع لغة C++؟" . stroustrup.com . مؤرشف من الأصل في ٦ فبراير ٢٠١٦. تم الاطلاع عليه في ١٦ سبتمبر ٢٠١٠ .
  24. 1 2 ستروستروب، بيارن. "تطوير لغة في العالم الحقيقي ومن أجله: سي++ 1991-2006" (ملف PDF) . مؤرشف (ملف PDF) من الأصل في 20 نوفمبر 2007. تم الاطلاع عليه في 14 أغسطس 2013 .
  25. عائلة لغات C: مقابلة مع دينيس ريتشي، وبيارن ستروستروب، وجيمس جوسلينج، تقرير C++ ، 12(7)، يوليو/أغسطس 2000، مذكور في "عائلة لغات C: مقابلة مع دينيس ريتشي، وبيارن ستروستروب، وجيمس جوسلينج" . تم الاطلاع عليه بتاريخ 26 ديسمبر 2025 .
  26. 1 2 3 ستروستروب، بيارن. "تاريخ لغة C++ : 1979-1991" (ملف PDF) . مؤرشف (PDF) من الأصل في 2 فبراير 2019. تم الاطلاع عليه في 18 يوليو 2013 . 
  27. ١ ٢ ٣ ٤ ستروستروب، بيارن (مارس ١٩٩٣). تاريخ لغة C++: ١٩٧٩-١٩٩١ (ملف PDF) . المؤتمر الثاني لجمعية ACM SIGPLAN حول تاريخ لغات البرمجة. جمعية آلات الحوسبة. الصفحات ٢٧١-٢٩٧ . doi : 10.1145/154766.155375 . تاريخ الاسترجاع: ٩ يونيو ٢٠٢٦ . 
  28. مالوي، ريتش (أغسطس 1988). "أصل لغة C++" (ملف PDF) . بايت . ص 216. تم الاطلاع عليه في 9 يونيو 2026 . 
  29. ستروستروب، بيارن. "لغة البرمجة سي++" ( الطبعة الأولى). مؤرشف من الأصل في 9 أغسطس 2012. تم الاطلاع عليه في 16 سبتمبر 2010 . 
  30. ستروستروب، بيارن. "لغة برمجة سي++" ( الطبعة الثانية). مؤرشف من الأصل في 9 أغسطس 2012. تم الاطلاع عليه في 16 سبتمبر 2010 . 
  31. ساتر، هيرب (30 يونيو 2016). "تقرير رحلة: اجتماع معايير ISO C++ الصيفي (أولو)" . herbsutter.com . مؤرشف من الأصل في 8 أكتوبر 2016. المعيار التالي بعد C++17 سيكون C++20
  32. دوسيكوفا، هانا (6 نوفمبر 2019). "N4817: دعوة ومعلومات اجتماع براغ 2020" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 29 ديسمبر 2019. تم الاطلاع عليه بتاريخ 13 فبراير 2020 .
  33. "الوضع الحالي" . isocpp.org . مؤرشف من الأصل بتاريخ 8 سبتمبر 2020. تم الاطلاع عليه بتاريخ 7 سبتمبر 2020 .
  34. "موافقة C++20 - هيرب ساتر" . isocpp.org . مؤرشف من الأصل بتاريخ 11 سبتمبر 2020. تم الاطلاع عليه بتاريخ 8 سبتمبر 2020 .
  35. «رائد علوم الحاسوب بيارن ستروستروب سيحصل على جائزة تشارلز ستارك دريبر للهندسة لعام 2018» (بيان صحفي). الأكاديمية الوطنية للهندسة. 3 يناير 2018. مؤرشف من الأصل في 3 يناير 2018. تم الاطلاع عليه بتاريخ 14 ديسمبر 2021 .
  36. مؤشر TIOBE (نوفمبر 2024). "مؤشر TIOBE لشهر نوفمبر 2024" . TIOBE.com . شركة TIOBE. مؤرشف من الأصل بتاريخ 18 نوفمبر 2024. تم الاطلاع عليه بتاريخ 18 نوفمبر 2024 .
  37. كلابورن، توماس (2 مارس 2025). "مبتكر لغة C++ يدعو للمساعدة في حماية لغة البرمجة من 'الهجمات الخطيرة'"" . السجل . تم الاطلاع عليه في 5 مارس 2025 .
  38. "أسئلة وأجوبة بيارن ستروستروب - من أين جاء اسم "C++"؟" . مؤرشف من الأصل في 6 فبراير 2016. تم الاطلاع عليه في 16 يناير 2008 . 
  39. "لغة سي لمبرمجي سي++" . جامعة نورث إيسترن . مؤرشف من الأصل في 17 نوفمبر 2010. تم الاطلاع عليه في 7 سبتمبر 2015 .
  40. "ISO/IEC 14882:1998" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2017. تم الاطلاع عليه بتاريخ 23 نوفمبر 2018 .
  41. "ISO/IEC 14882:2003" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 13 أغسطس 2021. تم الاطلاع عليه بتاريخ 23 نوفمبر 2018 .
  42. 1 2 "ISO/IEC 14882:2011" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل في 27 مايو 2016. تم الاطلاع عليه في 23 نوفمبر 2018 .
  43. "ISO/IEC 14882:2014" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 29 أبريل 2016. تم الاطلاع عليه بتاريخ 23 نوفمبر 2018 .
  44. "ISO/IEC 14882:2017" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 29 يناير 2013. تم الاطلاع عليه بتاريخ 2 ديسمبر 2017 .
  45. "ISO/IEC 14882:2020" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 16 ديسمبر 2020. تم الاطلاع عليه بتاريخ 16 ديسمبر 2020 .
  46. "الاجتماعات والمشاركة" . الأخبار والحالة والمناقشات حول لغة C++ القياسية . مؤسسة لغة C++ القياسية . تم الاطلاع عليه بتاريخ 6 سبتمبر 2025 .
  47. «لدينا معيار دولي: C++0x معتمد بالإجماع» . ساتر ميل . ١٢ أغسطس ٢٠١١. مؤرشف من الأصل في ٢٨ يونيو ٢٠١٨. تم الاطلاع عليه في ٢٣ نوفمبر ٢٠١٨ .
  48. "مستقبل لغة C++" . مؤرشف من الأصل بتاريخ 23 أكتوبر 2018. تم الاطلاع عليه بتاريخ 23 نوفمبر 2018 عبر channel9.msdn.com.
  49. "لدينا C++14! : معيار C++" . isocpp.org . مؤرشف من الأصل بتاريخ 19 أغسطس 2014. تم الاطلاع عليه بتاريخ 19 أغسطس 2014 . 
  50. ساتر، هيرب (15 يوليو 2017). "تقرير رحلة: اجتماع معايير ISO C++ الصيفي (تورنتو)" . مؤرشف من الأصل في 6 أغسطس 2017. تم الاطلاع عليه في 4 أغسطس 2017 .
  51. "ISO/IEC TR 18015:2006" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  52. "ISO/IEC TR 19768:2007" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 15 فبراير 2019 .
  53. "ISO/IEC TR 29124:2010" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 12 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  54. "ISO/IEC TR 24733:2011" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  55. "ISO/IEC TS 18822:2015" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  56. "ISO/IEC TS 19570:2015" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  57. "ISO/IEC TS 19841:2015" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  58. "ISO/IEC TS 19568:2015" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  59. "ISO/IEC TS 19217:2015" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  60. "ISO/IEC TS 19571:2016" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  61. "ISO/IEC TS 19568:2017" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  62. "ISO/IEC TS 21425:2017" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  63. "ISO/IEC TS 22277:2017" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  64. "ISO/IEC TS 19216:2018" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  65. "ISO/IEC TS 21544:2018" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  66. "ISO/IEC TS 19570:2018" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 يناير 2019. تم الاطلاع عليه بتاريخ 15 فبراير 2019 .
  67. "ISO/IEC TS 23619:2021" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 15 ديسمبر 2018. تم الاطلاع عليه بتاريخ 11 أكتوبر 2021 .
  68. "ISO/IEC TS 9922:2024" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل في 1 أبريل 2025. تم الاطلاع عليه في 1 أبريل 2025 .
  69. "ISO/IEC TS 19568:2024" . المنظمة الدولية للتوحيد القياسي. مؤرشف من الأصل بتاريخ 25 فبراير 2025. تم الاطلاع عليه بتاريخ 1 أبريل 2025 .
  70. ب. ستروستروب (أجرى المقابلة سيرجيو دي سيمون) (30 أبريل 2015). "ستروستروب: أفكار حول C++17 - مقابلة" . مؤرشف من الأصل في 8 يوليو 2015. تم الاطلاع عليه في 8 يوليو 2015 .
  71. ستروستروب، بيارن (2000). لغة البرمجة سي++ ( طبعة خاصة). أديسون-ويسلي. ص 46. ISBN   0-201-70073-5.
  72. ستروستروب، بيارن. "قضايا مفتوحة في لغة البرمجة سي++ (الطبعة الثالثة)" . مؤرشف من الأصل في 5 مايو 2014. تم الاطلاع عليه في 5 مايو 2014 .
  73. 1 2 "مسودة عمل، لغات البرمجة - C++: مقدمة عن المكتبة" . eel.is. §16.1 [library.general] . تم الاطلاع عليه في 9 يونيو 2026 .
  74. "مسودة عمل، لغات البرمجة - C++: ملفات الرأس" . eel.is. §16.4.2.3 [ملفات الرأس] . تم الاطلاع عليه في 9 يونيو 2026 .
  75. "مسودة عمل، لغات البرمجة - C++: وحدات مكتبة C++" . eel.is. §16.4.2.4 [std.modules] . تم الاطلاع عليه في 9 يونيو 2026 .
  76. كريفت، كلاوس؛ لانجر، أنجليكا (نوفمبر-ديسمبر 1996). "المكررات في مكتبة C++ القياسية" . تقرير C++ . تم الاطلاع عليه في 9 يونيو 2026 .
  77. "مجموعة أوراق ألكسندر أ. ستيبانوف" . stepanovpapers.com . مكتبة قوالب C++ القياسية . تم الاطلاع عليه في 9 يونيو 2026 .
  78. "إرشادات C++ الأساسية" . isocpp.github.io . مؤرشف من الأصل بتاريخ 16 فبراير 2020. تم الاطلاع عليه بتاريخ 9 فبراير 2020 .
  79. " إرشادات C++ الأساسية - الأسئلة الشائعة 6: هل تمت الموافقة على هذه الإرشادات من قبل لجنة معايير ISO C++؟ وهل تمثل إجماع اللجنة؟" . isocpp.github.io . تم الاطلاع عليه في 16 أبريل 2026. هل تمت الموافقة على هذه الإرشادات من قبل لجنة معايير ISO C++؟ وهل تمثل إجماع اللجنة؟ لا. هذه الإرشادات خارجة عن نطاق المعيار. وهي تهدف إلى خدمة المعيار، ويجب تحديثها باستمرار لتكون إرشادات محدّثة حول كيفية استخدام معيار C++ الحالي بفعالية. ونسعى جاهدين لمواكبة هذه الإرشادات مع المعيار كلما طوّرته اللجنة.
  80. «بيارن ستروستروب يعلن عن المبادئ التوجيهية الأساسية للغة C++: معيار C++» . isocpp.org . مؤرشف من الأصل بتاريخ 11 مايو 2020. تم الاطلاع عليه بتاريخ 31 مارس 2020 .
  81. "استخدام أدوات التحقق من إرشادات C++ الأساسية" . مايكروسوفت ليرن . مؤرشف من الأصل في 13 أغسطس 2021. تم الاطلاع عليه في 31 مارس 2020 .
  82. 1 2 "microsoft/GSL" . 18 يوليو 2021. مؤرشف من الأصل في 18 يوليو 2021. تم الاسترجاع في 18 يوليو 2021 عبر GitHub.
  83. "ملخص واجهة التطبيق الثنائية للغة C++" . 20 مارس 2001. مؤرشف من الأصل في 10 يوليو 2018. تم الاطلاع عليه في 30 مايو 2006 .
  84. "أسئلة وأجوبة بيارن ستروستروب - هل لغة C مجموعة فرعية من لغة C++؟" . مؤرشف من الأصل في 6 فبراير 2016. تم الاطلاع عليه في 5 مايو 2014 . 
  85. "C9X – معيار C الجديد" . مؤرشف من الأصل في 21 يونيو 2018. تم الاطلاع عليه في 27 ديسمبر 2008 .
  86. "دعم C++0x في GCC" . مؤرشف من الأصل في 21 يوليو 2010. تم الاطلاع عليه في 12 أكتوبر 2010 .
  87. "ميزات لغة C++0x الأساسية في VC10: الجدول" . مؤرشف من الأصل في 21 أغسطس 2010. تم الاطلاع عليه في 12 أكتوبر 2010 .
  88. "حالة Clang - C++98 وC++11 وC++14" . Clang.llvm.org. ١٢ مايو ٢٠١٣. مؤرشف من الأصل في ٤ يوليو ٢٠١٣. تم الاطلاع عليه في ١٠ يونيو ٢٠١٣ .
  89. بوكيل، ميليند أ. (2021). " كتابة إجراءات التجميع ضمن برامج C/C++ وجافا ". ريسيرش جيت. تم الاسترجاع في 1 أبريل 2025.
  90. دي فيلهينا، باولو إميليو؛ لاهاف، أوري؛ فافيديس، فيكتور؛ رعد، أزاليا (2024). "توسيع نموذج ذاكرة C/C++ باستخدام لغة التجميع المضمنة" . وقائع مؤتمر ACM حول لغات البرمجة . 8 : 1081-1107 . arXiv : 2408.17208 . doi : 10.1145/3689749 .
  91. مساهمو موقع cppreference.com. " إعلان لغة التجميع ". cppreference.com . تم الاطلاع عليه في 1 أبريل 2025.
  92. "لغة التجميع الموسعة (باستخدام مجموعة مترجمات جنو)" . وثائق GCC على الإنترنت . مشروع جنو . تم الاطلاع عليه في 1 أبريل 2025 .
  93. شركة إنتل. " التجميع المضمن ". دليل ومرجع مطوري برنامج Intel® C++ Compiler Classic ، الإصدار 2021.9. تم الاطلاع عليه في 1 أبريل 2025.
  94. IBM. " عبارات التجميع المضمنة (امتداد IBM) ". وثائق IBM . تم الاطلاع عليه في 1 أبريل 2025.
  95. "نظرة عامة على المُجمِّع المضمن" . مايكروسوفت ليرن . مايكروسوفت . تم الاطلاع عليه في 1 أبريل 2025 .
  96. "ربط لغتي C و C++ بلغة التجميع" . شركة تكساس إنسترومنتس. 23 فبراير 2025. تاريخ الاسترجاع: 1 أبريل 2025 .
  97. "ربط لغة C++ بلغة التجميع في GCC" . ويكي تطوير أنظمة التشغيل . تم الاطلاع عليه في 1 أبريل 2025 .

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