Предложение наименования C для перечислений кодов ошибок

Я пишу простой парсер для чтения файла конфигурации. Интерфейс 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.

Некоторые значения перечисления перекрывают друг друга и также попадают в "ошибку компилятора". нравиться OVERFLOW_ERROR,

Жду ваших предложений,

и я провел быстрое исследование в Google и обнаружил, что самый популярный клиент 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 */
};

он определяет перечисление без какого-либо имени, это хороший стиль? Тогда почему каковы причины для это?

Серьезно нужно еще несколько хороших решений по именованию. Пожалуйста, не обижай меня, я только начните читать книгу "Написание красивого кода C".

Заранее спасибо. Сандун.

10
задан Dair 9 June 2011 в 00:46
поделиться