لماذا نحتاج #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
```
حاولت إزالة هذه الأسطر