Avatar ·

متى يجب كتابة الكلمة المفتاحية inline للدوال والطرق في C++؟

مرحباً بالجميع! أنا مطور C++ مبتدئ، ودائماً ما يقلقني سؤال حول الكلمة المفتاحية inline. يبدو أنني أفهم أنها 'تدرج' كود الدالة في مكان الاستدعاء لتجنب التكاليف الإضافية للاستدعاء. لكن عملياً، أرى أن المترجمات الحديثة (GCC, Clang, MSVC) غالباً ما تقرر بنفسها ما إذا كانت ستدرج الدالة أم لا، حتى لو لم أكتب inline. والعكس صحيح، إذا كتبت inline، قد يتجاهل المترجم ذلك ولا يقوم بالإدراج. في النهاية، أنا مرتبك. إليك مثال: ```cpp // ملف utils.h int square(int x) { return x * x; } // ملف main.cpp #include "utils.h" int main() { int a = square(5); return 0; } ``` إذا قمت بتضمين هذا الملف الرأسي في عدة ملفات .cpp، سيعطي الرابط خطأ تعريف متعدد. قيل لي إنني بحاجة لإضافة inline. لكن لماذا؟ فـ square دالة صغيرة، والمترجم يمكنه إدراجها على أي حال. وإذا أضفت inline، فما الذي سيتغير؟ أو حالة أخرى: لدي دالة كبيرة في كلاس. إذا