恩欧姆及其价值观

时间:2009-09-17 18:33:48

标签: c++ enums

如果AErrorCode是ERR_NO_HEADER_RECORD_FOUND_ON_FILE,那么下面的过程中Field.Format(“%04d”,ErrorCode)的值是多少?

.h文件中的某处:

enum AErrorCode
{
    ERR_UNKNOWN_RECORD_TYPE_CODE = 5001,
    ERR_NO_HEADER_RECORD_FOUND_ON_FILE,
    ERR_DUPLICATE_HEADER_RECORD_FOUND,

    ERR_THIRD_PARTY_LETTER_RECORD_HAS_A_ZERO_REFERRAL_AMOUNT = 5101,    

    ERR_CALL_OCA_UNKNOWN_PROBLEM = 5999
};

在某些程序中:

void TADataset::SetErrorStatus(AErrorCode ErrorCode)
{
    NDataString Field;
    Field.Format("%04d", ErrorCode);
    AckRecord.SetField("oca_error_stat", "E");
    AckRecord.SetField("error_cd", Field);
}

2 个答案:

答案 0 :(得分:4)

 ERR_NO_HEADER_RECORD_FOUND_ON_FILE == 5002

如果您根本没有指定任何值,则从0开始,并递增enum中的下一个元素。如果指定一个值,则它将从下一个元素开始递增。除非通过为后继元素指定另一个值来再次重置计数器。

答案 1 :(得分:2)

根据C ++标准7.2 / 1:

  

< ...>如果第一个枚举器没有初始化器,则相应常量的值为零。 没有初始值设定项的枚举器定义为枚举数提供了通过将前一个枚举数的值增加1而获得的值。

这意味着ERR_NO_HEADER_RECORD_FOUND_ON_FILE等于ERR_UNKNOWN_RECORD_TYPE_CODE+1