Avatar ·

لماذا نحتاج #ifndef و #define في ملفات الرأس C++؟

مرحباً بالجميع! لقد بدأت للتو في تعلم C++ وأكتب أول برنامج لي يتكون من عدة ملفات. لدي ثلاثة ملفات: `main.cpp` و `functions.h` و `functions.cpp`. إليك محتوى `functions.h`: ```cpp // functions.h void printHello(); int add(int a, int b); ``` في `functions.cpp` أضمّن ملف الرأس هذا وأعرّف الدوال: ```cpp // functions.cpp #include "functions.h" #include void printHello() { std::cout << "Hello, world!" << std::endl; } int add(int a, int b) { return a + b; } ``` وفي `main.cpp` أضمّن أيضاً `functions.h`: ```cpp // main.cpp #include "functions.h" #include int main() { printHello(); std::cout << add(3, 4) << std::endl; return 0; } ``` كل شيء يعمل. لكنني لاحظت أنه في مشاريع الآخرين، في بداية ملفات الرأس، غالباً ما يكتبون شيئاً مثل: ```cpp #ifndef FUNCTIONS_H #define FUNCTIONS_H // ... الإعلانات ... #endif ``` حاولت إزالة هذه الأسطر