基于C和C++编译器的不同,说明遍历枚举的“正确写法”
前言
C++的代码文件后缀为.cpp,C的代码文件后缀为.c。同一个程序可能在其中一个文件可以编译成功,放在另外一个文件可能编译不通过。
教程源代码
正文
枚举定义
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
.c文件的main函数(编译通过)
int main()
{
// 遍历枚举元素
for (day = MON; day <= SUN; day++) {
printf("枚举元素:%d \n", day);
}
}
但是放在.cpp里编译会报错:
[Error] no ‘operator++(int)’ declared for postfix ‘++’ [-fpermissive]
意思:定义day是枚举对象,不允许++操作
.cpp文件的main函数正确写法
int main()
{
// 遍历枚举元素
for (day = MON; day <= SUN; day = (enum DAY)(day+1))
{
printf("枚举元素:%d \n", day);
}
}
或
int main()
{
// 遍历枚举元素
for (day = MON; day <= SUN; day = DAY(day+1))
{
printf("枚举元素:%d \n", day);
}
}
或(这种写法不比上面的写法好)
int main()
{
int i;
for(i = MON ; i <= SUN ; i++){
printf("枚举数据:%d \n",i);
}
}
总结
1.在C++中,对于枚举对象,不允许用++操作(或许用函数重载可以使之适用,读者可以试试)