Avatar ·

قواعد استخدام الشرطة السفلية في أسماء المعرفات في لغة C++

مرحبًا بالجميع! لقد بدأت للتو في تعلم لغة C++ ولاحظت أن بعض الأمثلة البرمجية تستخدم الشرطة السفلية في بداية أسماء المتغيرات، مثل `_value` أو `__internal`. أفهم أن هذا على الأرجح نمط تسمية، لكن يبدو لي أن المترجم يتصرف بشكل غريب مع هذه الأسماء. على سبيل المثال، جربت كتابة الكود التالي: ```cpp #include class MyClass { private: int _value; public: MyClass(int v) : _value(v) {} int getValue() const { return _value; } }; int main() { MyClass obj(42); std::cout << obj.getValue() << std::endl; return 0; } ``` تم تجميعه وعمل بنجاح، لكن بعد ذلك جربت القيام بالتالي: ```cpp int _main() { return 0; } ``` وأصدر المترجم تحذيرًا. وعندما حاولت استخدام `__LINE__` كاسم متغير، أخطأ المترجم بخطأ. أنا في حيرة: ما هي القواعد بالضبط؟ أين يمكنني استخدام الشرطة السفلية وأين لا يمكنني؟ لماذا بعض الأسماء التي تبدأ بشرطة سفلية تسبب مشاكل؟