MSV C предупреждение для потенциально неинициализированных переменных не особенно хорошо, в частности, оно ложно утверждает, что я могу быть неинициализирован в этой программе:
#include<cstdlib>
enum class Color{
Red,
Green
};
int f(Color c){
int i;
switch(c){
case Color::Red:
i=11;
case Color::Green:
i=22;
};
return i;
}
int main(){
return f(rand()?Color::Red : Color::Green);
}
предупреждение C4701: потенциально неинициализированная локальная переменная 'i' использовал
Я могу, очевидно, просто инициализировать i в 0 или отключить предупреждения с помощью паргм, но тогда это предупреждение не сработает, если я добавлю enum Blue, и я никогда не обработаю его в switch, и я хочу в этом случае его нужно запустить.
Есть ли способ заставить это предупреждение MSV C работать как положено?