لماذا لا يمكن في C++ التصريح عن متغيرات داخل switch-case بدون أقواس معقوفة؟
مرحباً بالجميع! لقد بدأت للتو في تعلم C++ بعد Python، وواجهت مشكلة غريبة. عندما أكتب switch-case عادي، يشتكي المترجم من التصريح عن المتغيرات داخل case. إليك مثال على كود لا يعمل لدي:
```cpp
#include
int main() {
int value = 2;
switch (value) {
case 1:
int x = 10; // خطأ!
std::cout << "Case 1: " << x << std::endl;
break;
case 2:
int y = 20; // خطأ أيضاً!
std::cout << "Case 2: " << y << std::endl;
break;
default:
std::cout << "Default" << std::endl;
}
return 0;
}
```
المترجم (GCC) يعطي أخطاء مثل "jump to case label" و "crosses initialization of variable". أفهم أن switch-case ليس دالة أو كتلة كود، لكن لماذا لا يمكن ببساطة التصريح عن متغير داخل case؟ ففي Python أو JavaScript يعمل هذا بشكل طبيعي. أضطر إلى إخراج التصريحات لجميع المتغيرات