السلام عليكم ورحمة الله وبركاته
أحبتي أود أن أسأل عن الدوال التي تبدأ بشارب مثلا #if و #define وغيرها هل من شرح لكيفية التعامل مع هذه الدول وأكون شاكر لوضُمنت بأمثله سهله.
السلام عليكم ورحمة الله وبركاته
أحبتي أود أن أسأل عن الدوال التي تبدأ بشارب مثلا #if و #define وغيرها هل من شرح لكيفية التعامل مع هذه الدول وأكون شاكر لوضُمنت بأمثله سهله.
تم تعديل هذه المشاركة بواسطة faisal_01 في 1 يونيو 2016 في 19:14
لا تسمى if ولا #if دوال، الأولى جزء من تصريح if statement (الـif نفسها كلمة محجوزة reserved word) والثانية توجيه للمعالج المسبق preprocessor directive، تسمى # هاش أو رمز الرقم أو الشباك، وليست شارب ♯.
المترجم في C/C++ في أبسط صورة يمكن أن يقوم بالترجمة على مرحلتين (الواقع أكثر تعقيد)، مرحلة المعالجة المسبقة ومرحلة الترجمة الفعلية، حيث يأخذ المترجم البرنامج الذي تعطيه إياه ويمرره أولاً للمعالج المسبق الذي يفهم التوجيهات التي تبدأ بـ#، بعدما ينفذ المعالج المسبق هذه التوجيهات، سينتج ملف جديد وهو ماستتم ترجمته في النهاية.
فمثلاً لو كتبت:
#define NUM 1
int main()
{
#if 0
puts("ABC");
#endif
return NUM
}
سيحولها المعالج المسبق إلى مايشبه:
int main()
{
return 1
}
لاحظ أن NUM استبدلت بـ1 وأزيلت puts، وهذا ماستتم ترجمته في النهاية، أي أن التوجيهات ليست سوى لغة مصغرة لتحويل ملف البرنامج قبل أن يترجم.
يمكن أن تستخدم #define مثلاً لتعريف الثوابت مثل π، و #if تستخدم مثلاً إذا أردت لجزء معين من الكود وظيفته الـdebugging أن يزال عندما تريد نشر البرنامج، هذه فقط بعض الاستخدامات.
لكن لايمكن أن تستخدم if بدل #if أو العكس، فكلاً منهما يستخدم لغرض مختلف.
اطلع على كتاب لغة C الشامل الصفحة 185، ستجد فصل عن المعالجة المسبقة.
المرجع والشرح أكثر من مميز شكراً أخي على الإهتمام
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…