История изменений
Исправление xaizek, (текущая версия) :
enum months это перечислимый тип. JAN, FEB, MAR это константы этого типа. var это переменная этого типа:
enum months var;
По идее, переменные этого типа не должны принимать значения, отличающиеся от этих констант и компилятор может эти ситуации отловить, если присваиваемое выражение имеет другой тип (также в switch по перечислению, в котором нету каких-то значений, компилятор может сообщить об этом). Но реальных ограничений тут нет и такие переменные могут содержать что-то вне области констант, GCC предполагает такой расклад:
int
func(enum months var)
{
switch (var) {
case JAN:
case FEB:
case MAR:
return 0;
};
// GCC с соответствующими флагами требует return здесь и мы сюда попадём, если var не был инициализирован, например.
return 1;
}
Исходная версия xaizek, :
enum months это перечислимый тип. JAN, FEB, MAR это константы этого типа. var это переменная этого типа:
enum months var;
По идее, переменные этого типа не должны принимать значения, отличающиеся от этих констант и компилятор может эти ситуации отловить, если присваиваемое выражение имеет другой тип (также в switch по перечислению, в котором нету каких-то значений, компилятор может сообщить об этом). Но реальных ограничений тут нет и такие переменные могут содержать что-то вне области констант, GCC предполагает такой расклад:
int
func(enum months var)
{
switch (var) {
case JAN:
case FEB:
case MAR:
return 0;
};
// GCC требует return здесь и мы сюда попадём, если var не был инициализирован, например.
return 1;
}