متى تستخدم extern في C++: المتغيرات العالمية وتقسيم الكود
مرحبًا أيها الزملاء! أنا أتعلم C++ ولا أستطيع فهم الكلمة المفتاحية `extern`. قرأت الوثائق ولكن ما زلت مرتبكًا.
المشكلة أنني أكتب برنامجًا صغيرًا مقسمًا إلى عدة ملفات. لدي `main.cpp` و `utils.cpp` و `utils.h`. أريد إعلان متغير عام في `utils.cpp` ثم استخدامه في `main.cpp`. المترجم يشتكي من "multiple definition" أو "undefined reference". جربت خيارات مختلفة ولكن دون جدوى.
إليك مثال على الكود الخاص بي:
**utils.h:**
```cpp
int globalCounter = 0;
void incrementCounter();
```
**utils.cpp:**
```cpp
#include "utils.h"
void incrementCounter() {
globalCounter++;
}
```
**main.cpp:**
```cpp
#include "utils.h"
#include
int main() {
incrementCounter();
std::cout << globalCounter << std::endl;
return 0;
}
```
المترجم يعطي خطأ: "multiple definition of `globalCounter`". أفهم أن هذا بسبب أنني أعرف المتغير في ملف الرأس الذي يتم تضمينه في عدة ملفات.