Pourquoi en C++ switch-case ne permet-il pas de déclarer des variables sans accolades ?
Bonjour à tous ! Je viens de commencer à apprendre le C++ après Python, et j'ai rencontré un problème étrange. Quand j'écris un switch-case normal, le compilateur se plaint de la déclaration de variables à l'intérieur de case. Voici un exemple de code qui ne fonctionne pas chez moi :
```cpp
#include
int main() {
int value = 2;
switch (value) {
case 1:
int x = 10; // Erreur !
std::cout << "Case 1: " << x << std::endl;
break;
case 2:
int y = 20; // Erreur aussi !
std::cout << "Case 2: " << y << std::endl;
break;
default:
std::cout << "Default" << std::endl;
}
return 0;
}
```
Le compilateur (GCC) génère des erreurs comme "jump to case label" et "crosses initialization of variable". Je comprends que switch-case n'est ni une fonction ni un bloc de code, mais pourquoi ne peut-on pas simplement déclarer une variable à l'intérieur de case ? En Python ou JavaScript, cela fonctionne normalement. Je suis obligé de sortir toutes les déclarations de variables