سؤال

متى كسوف يقوم بإنشاء ملف جديد (ج أو file) في مشروع C، يقوم المحرر دائمًا بإنشاء ملف #define في أعلى الملف هكذا:إذا كان الملف يسمى "myCFile.c" فسيكون هناك ملف #define في بداية الملف مثل هذا

#ifndef MYCFILE_C_
#define MYCFILE_C_

لقد رأيت محررين آخرين يفعلون ذلك أيضًا (على ما أعتقد Codewright وSlikEdit).ال #defines لا يبدو أن تفعل أي شيء للمحرر حيث يمكنني حذفها دون أي مشكلة، ولا أستطيع التفكير في سبب لذلك أنا سوف ترغب في استخدامها.هل يعرف أحد لماذا هم هناك؟

هل كانت مفيدة؟

المحلول

انها للاحتراز تعريفات متعددة.

نصائح أخرى

في بعض الأحيان يقوم الأشخاص بتضمين ملف .c كامل في ملفات .c أخرى (أو حتى ملفات .h)، لذلك يكون له نفس الغرض تمامًا وهو منع تضمين ملف التضمين عدة مرات وتسبب المترجم في ظهور أخطاء تعريف متعددة.

ومع ذلك، فمن الغريب أن يكون السلوك الافتراضي للمحرر هو وضع هذا في أي شيء غير ملف ‎.h.ستكون هذه ميزة نادرًا ما تكون مطلوبة.

نسخة أكثر حداثة من هذا هي استخدام:

#pragma once

من غير المعتاد رؤية هذا في ملف ‎.c، وعادةً ما يكون موجودًا في ملفات الرأس فقط.

أعتقد أن هذا يعد ارتدادًا لمشاكل تضمين لغة C، حيث سيتم تضمين نسخ متعددة من المصدر - إلا إذا كنت دقيقًا في التعامل مع سلاسل التضمين (يتضمن ملف واحد عددًا غير آخر).كان التحقق من تعريف الرمز وإدراج ما إذا كان الرمز محددًا فقط هو وسيلة للخروج من هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top