• 0
faisal_01

ما الفرق بين if و #if؟ وما هي فكرة استعمالها؟ وهل هناك إختلاف في السرعه؟

سؤال

السلام عليكم ورحمة الله وبركاته

أحبتي أود أن أسأل عن الدوال التي تبدأ بشارب مثلا #if و #define وغيرها هل من شرح لكيفية التعامل مع هذه الدول وأكون شاكر لوضُمنت بأمثله سهله.

تم تعديل بواسطه faisal_01
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

2 إجابة على هذا السؤال .

  • 0

لا تسمى 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، ستجد فصل عن المعالجة المسبقة.

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المرجع والشرح أكثر من مميز شكراً أخي على الإهتمام

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .