Avatar ·

متى تستخدم 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`". أفهم أن هذا بسبب أنني أعرف المتغير في ملف الرأس الذي يتم تضمينه في عدة ملفات.