[英]Enum and their Values
如果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);
}
ERR_NO_HEADER_RECORD_FOUND_ON_FILE == 5002
如果根本不指定任何值,則該值從0
開始,並遞增enum
的下一個元素。 如果指定一個值,則它將從下一個元素開始遞增。 除非您通過為后繼元素指定另一個值來再次重置計數器。
根據C ++標准7.2 / 1:
<...>如果第一個枚舉器沒有初始化程序,則相應常量的值為零。 沒有初始化程序的枚舉數定義為枚舉數賦值,方法是將前一個枚舉數的值加1。
這意味着ERR_NO_HEADER_RECORD_FOUND_ON_FILE
等於ERR_UNKNOWN_RECORD_TYPE_CODE+1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.