有什麼方法可以限制在switch語句中可以作爲個案的值?有什麼辦法可以限制在switch語句中可以作爲例子使用的值嗎?
說,例如,我用C
#include "stdio.h"
#include "stdlib.h"
#define FRIDAY (5)
typedef enum {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY
}e_case_values;
int main()
{
e_case_values case_value = SUNDAY;
switch(case_value)
{
case SUNDAY:
printf("The day is Sunday");
break;
case MONDAY:
printf("The day is Monday");
case FRIDAY:
printf("The day is Friday");
default:
printf("Some odd day");
}
return EXIT_SUCCESS;
}
有此代碼現在,我的目標是,switch語句只能拿它們由枚舉e_case_values,而不是通過任何其他方式定義的值。如果代碼確實包含這種用法,我希望在編譯期間拋出錯誤。有沒有辦法做到這一點?
謝謝......這就是我一直在尋找的。我修改了我的代碼以處理其餘未使用的案例(星期二,星期三,星期四)。我使用(gcc enum_expts.c -Wswitch-enum -Werror = switch-enum)編譯了代碼,並獲得了我想要的內容......感謝您的及時幫助...... –