C枚举程序月份的月份未编译

时间:2019-04-05 17:10:22

标签: c enumeration

我从教科书中获得了以下代码示例,但仍未编译。

我在printf行上看到一个错误,提示Unary '++': 'months; does not define this operator or a conversion to a type acceptable to the predefined operator

我不知道该怎么做,因为这是我第一次尝试枚举,而这实际上是本书中的示例代码。怎么了?

// Fig. 10.18: fig10_18.c
// Using an enumeration

#include <stdio.h>

// enumeration constants represent months of the year            
enum months {                                                    
    JAN = 1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC
}; 

int main(void) { 
    // initialize array of pointers
    const char *monthName[] = { "", "January", "February", "March", 
      "April", "May", "June", "July", "August", "September", "October",
      "November", "December" 
    };

    // loop through months
    for (enum months month = JAN; month <= DEC; ++month) {
        printf("%2d%11s\n", month, monthName[month]);
    } 
}

1 个答案:

答案 0 :(得分:0)

您所做的工作在C语言中是正确的,但在C ++语言中是错误的。

您必须使用C编译器而不是C ++编译器。

您可以尝试使用-x c命令行选项来告诉C ++编译器将源文件编译为C代码。