在AIX上使用XL C编译头文件时,我为定义的枚举类型的每个枚举值得到一个(1506-045(S))“未声明的标识符”错误。对于我的生活,我在文件中找不到任何语法或逻辑错误,并且在其他文件中有类似的枚举编译。我可以在这个文件中找到的唯一区别是枚举被明确定义为它们的数值。以下代码是编译器标记为错误的内容:
new.df<-rbind(time_series, sapply(time_series, function(x){ forecast(x,11)$mean }))
new.time_series <- ts(new.df, frequency=7, start=c(1,1))
与其他枚举中隐式定义的值相反,后者编译时没有错误:
typedef enum
{
ENUM_VAL_0 = 0,
ENUM_VAL_1 = 1,
....
ENUM_VAL_10 = 10
} MY_BAD_ENUM_TYPE;
有人知道XL C是否有明确定义枚举值的问题?是否有编译器的标志或选项会影响这个?我的印象是明确定义你的枚举值,虽然大多数没有意义,但在C假设中不是问题吗?
有没有人有这样的经历?
更新
根据@kaylum的要求,这里是完整的源代码,问题出现之前的行是:
typedef enum
{
ENUM_VAL_0,
ENUM_VAL_1,
...
ENUM_VAL_10
} MY_GOOD_ENUM_TYPE;
以下是相应的编译器错误:
typedef FLOAT_32 WAAS_FAST_CORRECTION_TYPE;
/******************************************************************************/
/* Enumerated type of all possible types of WAAS GEO messages */
/* Data Element: Derived_Msg_Type */
/******************************************************************************/
typedef enum
{
WAAS_GEO_MSG0_TYPE = 0,
WAAS_GEO_MSG1_TYPE = 1,
WAAS_GEO_MSG2_TYPE = 2,
WAAS_GEO_MSG3_TYPE = 3,
WAAS_GEO_MSG4_TYPE = 4,
WAAS_GEO_MSG5_TYPE = 5,
WAAS_GEO_MSG6_TYPE = 6,
WAAS_GEO_MSG7_TYPE = 7,
WAAS_GEO_MSG8_TYPE = 8,
WAAS_GEO_MSG9_TYPE = 9,
WAAS_GEO_MSG10_TYPE = 10,
WAAS_GEO_MSG12_TYPE = 12,
WAAS_GEO_MSG17_TYPE = 17,
WAAS_GEO_MSG18_TYPE = 18,
WAAS_GEO_MSG24_TYPE = 24,
WAAS_GEO_MSG25_TYPE = 25,
WAAS_GEO_MSG26_TYPE = 26,
WAAS_GEO_MSG28_TYPE = 28,
WAAS_GEO_MSG0_ZERO_FILL = 61,
WAAS_GEO_MSG62_TYPE = 62,
WAAS_GEO_MSG63_TYPE = 63,
WAAS_GEO_LAST_MSG = 64,
WAAS_GEO_INVALID_TYPE = 99
} WAAS_GEO_ENUM_MSG_TYPE;
如果这实际上更有帮助,请告诉我。