История изменений
Исправление
DELIRIUM,
(текущая версия)
:
Тебе нужно делать так:
-Werror=switch-enum
Пример:
enum class MegaEnum : char
{
P = 'p',
E = 'e',
N = 'n',
I = 'i',
S = 's',
};
int main()
{
MegaEnum c{MegaEnum::S};
switch(c)
{
case MegaEnum::P:
case MegaEnum::E:
case MegaEnum::N:
case MegaEnum::I:
std::cout << "It's a penis part!" << std::endl;
break;
default:
std::cout << "ALARM! NOT A PENIS PART!" << std::endl;
break;
}
}
$ g++ -Werror=switch-enum -std=c++11 test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: enumeration value ‘S’ not handled in switch [-Werror=switch-enum]
switch(c)
^
cc1plus: some warnings being treated as errors
Соответственно switch{} засовываешь в функцию. И оно у тебя будет проверяться на этапе компиляции (ну то есть не даст тебе пропустить при проверке ни одно значение из перечисления).
Исправление
DELIRIUM,
:
Тебе нужно делать так:
-Wswitch-enum -Werror
Пример:
enum class MegaEnum : char
{
P = 'p',
E = 'e',
N = 'n',
I = 'i',
S = 's',
};
int main()
{
MegaEnum c{MegaEnum::S};
switch(c)
{
case MegaEnum::P:
case MegaEnum::E:
case MegaEnum::N:
case MegaEnum::I:
std::cout << "It's a penis part!" << std::endl;
break;
default:
std::cout << "ALARM! NOT A PENIS PART!" << std::endl;
break;
}
}
$ g++ -Wswitch-enum -Werror -std=c++11 test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: enumeration value ‘S’ not handled in switch [-Werror=switch-enum]
switch(c)
^
cc1plus: all warnings being treated as errors
Соответственно switch{} засовываешь в функцию. И оно у тебя будет проверяться на этапе компиляции (ну то есть не даст тебе пропустить при проверке ни одно значение из перечисления).
Исходная версия
DELIRIUM,
:
Тебе нужно делать так:
-Wswitch-enum -Werror
Пример:
enum class MegaEnum : char
{
P = 'p',
E = 'e',
N = 'n',
I = 'i',
S = 's',
};
int main()
{
MegaEnum c{MegaEnum::S};
switch(c)
{
case MegaEnum::P:
case MegaEnum::E:
case MegaEnum::N:
case MegaEnum::I:
std::cout << "It's a penis part!" << std::endl;
break;
default:
std::cout << "ALARM! NOT A PENIS PART!" << std::endl;
break;
}
}
$ g++ -Wswitch-enum -Werror -std=c++11 test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:15:9: error: enumeration value ‘S’ not handled in switch [-Werror=switch-enum]
switch(c)
^
cc1plus: all warnings being treated as errors
Соответственно switch{} засовываешь в функцию. И оно у тебя будет проверяться на этапе компиляции.