Mohssen A Mohssen نشر 2 ديسمبر 2021 أرسل تقرير نشر 2 ديسمبر 2021 حاولت أن أقرأ بعض أكواد برامج ++C معروفة، ووجد أنهم يستعملون الكود التالي في أغلب ملفات الترويسات header files: #pragma once // ... ولكن ما معنى هذا الكود؟ وهل يجب أن أستعمله؟ 1 اقتباس
1 سامح أشرف نشر 2 ديسمبر 2021 أرسل تقرير نشر 2 ديسمبر 2021 هذا الكود عبارة عن موجهة معالجة مسبق preprocessor directive ويستخدم كحارس لملفات الترويسة header guard، فبدلًا من تعريف قيمة معينة (في الغالب تكون اسم الملف بأحرف كبيرة) لكي لا يتم إستدعاء ملفات الترويسة أكثر من مرة لكي لا يحدث خطأ (function already has a body)، فيمكن أن تستخدم هذا الموجهة بشكل تلقائي في كل ملفات الترويسة لديك لكي لا يحدث هذا الخطأ. يوفر هذا الموجهة الكود والوقت لأنك لن تضطر إلى تعريف موجهة خاص لكل ملف ترويسة لديك. #pragma once struct foo { int member; }; يوجد بعض المصرفات compilers التي تقوم بتحسين أداء البرنامج عند إستعمال هذا الموجهة بدلًا من الطريقة التقليدية، حيث لن يقوم الـ preprocessor بإعادة قراءة الملفات التي تحتوي على هذا الموجهة في بدايتها مما يحسن من عملية التصريف وأداء البرنامج بشكل طفيف ملاحظة: هذا الموجهة ليس جزء من تعليمات ++C الرسمية ولكن يتم إستعماله بشكل كبير في أغلب المصرفات compilers، لذلك عليك التأكد أولًا من أن المصرَّف الذي لديك يدعم هذا الموجهة. هنا صورة توضح المصرفات التي تدعم هذا الموجهة والتي لا تدعمه: أنظر إلى خطأ function already has a body من هنا: يمكنك أن تقرأ المزيد عن هذا الموجهة من خلال هذه المقالة هنا: 1 اقتباس
السؤال
Mohssen A Mohssen
حاولت أن أقرأ بعض أكواد برامج ++C معروفة، ووجد أنهم يستعملون الكود التالي في أغلب ملفات الترويسات header files:
ولكن ما معنى هذا الكود؟ وهل يجب أن أستعمله؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.