"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا يعمل `printf` في كل من ``std::printf` و`printf` عند استخدام `` في C++؟

لماذا يعمل `printf` في كل من ``std::printf` و`printf` عند استخدام `` في C++؟

تم النشر بتاريخ 2024-12-21
تصفح:712

Why does `printf` work in both `std::printf` and `printf` when using `` in C  ?

cstdio Stdio.h Namespace

في الوثائق المرجعية للغة C لـ ، تدعي أن جميع عناصر المكتبة موجودة داخل مساحة الاسم std . ومع ذلك، تظهر التجارب أن كلا من استدعاءات الدالة std::printf وprintf تعمل. هل يشير هذا إلى أن رؤوس C تستورد أسماء الرموز في كل من مساحات الأسماء القياسية والعامة؟

الإجابة

بما في ذلك يستورد أسماء الرموز في مساحة الاسم القياسية، وربما مساحة الاسم العالمية. في المقابل، يؤدي تضمين إلى استيراد أسماء الرموز إلى مساحة الاسم العامة، وربما دمجها في مساحة الاسم std أيضًا.

يمتد هذا السلوك إلى جميع رؤوس النمط C. وفقًا لمعيار C 11 (الملحق د)، تتصرف رؤوس مكتبة C القياسية كما يلي:

"2 كل رأس C، كل منها له اسم النموذج name.h، يتصرف كما لو أن كل اسم تم وضعه في مساحة اسم المكتبة القياسية بواسطة رأس cname المطابق ضمن نطاق مساحة الاسم العامة."

&&&] لذلك، يظل من غير المؤكد ما إذا كانت هذه الأسماء قد تم الإعلان عنها أو تعريفها في البداية ضمن مساحة الاسم القياسية ثم تم إدخالها في مساحة الاسم مساحة الاسم العالمية عبر استخدام التصريحات، أو العكس.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3