Avatar ·

امتدادات ملفات C++: .cc، .cpp، .cxx، .h — ما الفرق وماذا تختار؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم C++ وأكتب برامج بسيطة في Visual Studio Code. لاحظت أنه عندما أنشئ ملفًا جديدًا، يُعرض عليّ اختيار من بين مجموعة من الامتدادات: .cpp، .cc، .cxx، وبالنسبة للملفات الرأسية (header files) — .h، .hpp، .hxx. اعتدت دائمًا استخدام .cpp و .h لأن هذا ما كان في أول برنامج تعليمي. لكن مؤخرًا قمت بتنزيل مشروع مفتوح المصدر (open-source) على GitHub، وكانت جميع الملفات بامتداد .cc. حاولت إعادة تسميتها إلى .cpp، لكن المترجم (compiler) أظهر أخطاء ربط (linking errors) — قال إنه لا يمكنه العثور على بعض الدوال (functions). اضطررت لإعادتها كما كانت. الآن أنا مرتبك: هل هذه الامتدادات قابلة للتبادل أم لا؟ إذا كانت كذلك، فلماذا لا يعمل المشروع بـ .cc عندما أعيد تسميته إلى .cpp؟ وإذا لم تكن كذلك، فما الامتداد الذي يُعتبر "صحيحًا" أو "قياسيًا" (standard)؟ وسؤال آخر: هل يؤثر الامتداد على كيفية معالجة المترجم للكود؟ على سبيل المثال، هل يمكنه الخلط بين ملفات C و C++؟ مثالي: كتبت كلاسًا بسيطًا `Cat` في ملف `Cat.cc` و main في `main.cc`. كل شيء يُترجم عبر g++ main.cc Cat.cc -o app. لكن