لا يمكن تضمين ملف رأس المكتبة الديناميكي في أكثر من ملف واحد؟

StackOverflow https://stackoverflow.com/questions/1712407

  •  19-09-2019
  •  | 
  •  

سؤال

لقد نجحت في إضافة مكتبة ديناميكية إلى برنامج، ولكن عندما أحاول تضمين ملف الرأس في ملف ثان للمشروع، أحصل على أخطاء حول إعادة تدوير الفئة. سأضيف المزيد من المعلومات إذا كان هذا لا يكفي

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

المحلول

تحتاج إلى وضع حراس في رأسك حتى لا يتم تضمين عدة مرات. للحصول على ملف 'my.h'، يمكنك إضافة شيء على غرار:

#ifndef MY_H
#define MY_H

// Header declarations here

#endif

بهذه الطريقة، يمكنك تضمين ملف .h عدة مرات ولكن سيتم تضمينه فقط في المرة الأولى.

نصائح أخرى

#include ستحل محل العبارة #include مع محتوى الملفات؛ وبالتالي فإن وجود رقم متعدد أشكال من نفس الملف سوف يعيد تعريف العناصر عدة مرات. الطريقة النموذجية هي حماية مثل:

/* file foo .h */
#ifndef _FOO_H
#define _FOO_H

/* content */

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