我正在寫一個簡單的解析器讀取配置文件。該接口的config.h只有三個 他們在簡略如下主要功能,Ç命名建議
config_init();
config_dinit();
config_parse();
config_read_value();
我的問題是這些功能將發射不同類型的錯誤,對於一個示例,
config_init() emit , FILE_NOT_FOUND,FILE_EOF_ERROR,FILE_OPEN_ERROR, ...
config_dinit() emit , NOT_INIT_ERROR ,
config_parse() emit , PARSE_ERROR, OVERFLOW_ERROR, INVALID_CHARACTER_FOUND_ERROR,...
config_read_value() emit, SECTION_NOT_FOUND,KEYWORD_NOT_FOUND,OVERFLOW_ERROR,NOT_INITIALIZED_ERROR,INVALID_STATE_ERROR,... etc.
Then I create enums for each function, for by using these names ,
enum Config_ParseError{...} , enum Config_InitError{...} ,enum Config_ReadValueError{..}
etc.
一些枚舉值相互重疊並點擊「編譯器錯誤」過。像 溢出錯誤,
我打開您的建議,
,我已經做了谷歌的快速調研,發現最流行的IRC客戶端 源代碼已經定義了這樣的枚舉,
enum {
CMDERR_OPTION_UNKNOWN = -3, /* unknown -option */
CMDERR_OPTION_AMBIGUOUS = -2, /* ambiguous -option */
CMDERR_OPTION_ARG_MISSING = -1, /* argument missing for -option */
CMDERR_UNKNOWN, /* unknown command */
CMDERR_AMBIGUOUS, /* ambiguous command */
CMDERR_ERRNO, /* get the error from errno */
CMDERR_NOT_ENOUGH_PARAMS, /* not enough parameters given */
CMDERR_NOT_CONNECTED, /* not connected to server */
CMDERR_NOT_JOINED, /* not joined to any channels in this window */
CMDERR_CHAN_NOT_FOUND, /* channel not found */
CMDERR_CHAN_NOT_SYNCED, /* channel not fully synchronized yet */
CMDERR_ILLEGAL_PROTO, /* requires different chat protocol than the active server */
CMDERR_NOT_GOOD_IDEA, /* not good idea to do, -yes overrides this */
CMDERR_INVALID_TIME, /* invalid time specification */
CMDERR_INVALID_CHARSET, /* invalid charset specification */
CMDERR_EVAL_MAX_RECURSE, /* eval hit recursion limit */
CMDERR_PROGRAM_NOT_FOUND /* program not found */
};
它定義的enum沒有任何名稱,那是一個很好的風格嗎?那麼爲什麼 那個原因是什麼呢?
嚴重需要一些更好的命名決定。請不要傷害我我只是 開始閱讀「寫美麗的C代碼」一書。
在此先感謝。 Sandun。
哇好建議標題先生, – 2011-06-09 13:30:11
'類型定義枚舉_config_error error_t;'爲我工作。 – Danijel 2017-04-07 07:06:11