اذهب إلى المحتوى
  • 0

ما معنى pragma once# في برامج ++C؟

Mohssen A Mohssen

السؤال

حاولت أن أقرأ بعض أكواد برامج ++C معروفة، ووجد أنهم يستعملون الكود التالي في أغلب ملفات الترويسات header files:

#pragma once
  
  // ...

ولكن ما معنى هذا الكود؟ وهل يجب أن أستعمله؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

هذا الكود عبارة عن موجهة معالجة مسبق  preprocessor directive ويستخدم كحارس لملفات الترويسة header guard، فبدلًا من تعريف قيمة معينة (في الغالب تكون اسم الملف بأحرف كبيرة) لكي لا يتم إستدعاء ملفات الترويسة أكثر من مرة لكي لا يحدث خطأ (function already has a body)، فيمكن أن تستخدم هذا الموجهة بشكل تلقائي في كل ملفات الترويسة لديك لكي لا يحدث هذا الخطأ. يوفر هذا الموجهة الكود والوقت لأنك لن تضطر إلى تعريف موجهة خاص لكل ملف ترويسة لديك.

#pragma once

struct foo 
{
    int member;
};

يوجد بعض المصرفات compilers التي تقوم بتحسين أداء البرنامج عند إستعمال هذا الموجهة بدلًا من الطريقة التقليدية، حيث لن يقوم الـ preprocessor بإعادة قراءة الملفات التي تحتوي على هذا الموجهة في بدايتها مما يحسن من عملية التصريف وأداء البرنامج بشكل طفيف

ملاحظة: هذا الموجهة ليس جزء من تعليمات ++C الرسمية ولكن يتم إستعماله بشكل كبير في أغلب المصرفات compilers، لذلك عليك التأكد أولًا من أن المصرَّف الذي لديك يدعم هذا الموجهة.

هنا صورة توضح المصرفات التي تدعم هذا الموجهة والتي لا تدعمه:

61a92bf7168cf_Screenshot2021-12-02222530.png.2f133c684f895032217f974d8c31aca9.png

أنظر إلى خطأ function already has a body من هنا:

يمكنك أن تقرأ المزيد عن هذا الموجهة من خلال هذه المقالة هنا:

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...