मैं config file.The 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.
कुछ enum मूल्यों को एक दूसरे अतिव्यापी हैं और हिट "संकलक त्रुटि" भी। जैसे OVERFLOW_ERROR,
मैं अपने सुझाव के लिए खोलने रहा हूँ,
और मैं गूगल पर एक त्वरित शोध किया और पाया कि सबसे लोकप्रिय आईआरसी ग्राहक स्रोत कोड इस तरह enums परिभाषित किया है है,
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 परिभाषित करता है, क्या यह एक अच्छी शैली है? तो के कारण क्यों हैं?
गंभीरता से कुछ और अच्छे नामकरण निर्णयों की आवश्यकता है। कृपया मुझे चोट न दें मैं केवल "सुंदर सी कोड लिखना" पुस्तक पढ़ना शुरू करता हूं।
अग्रिम में धन्यवाद। सांडुन।
वाह अच्छी सलाह शीर्षक महोदय, –
'typedef enum _config_error error_t;' मेरे लिए काम करता है। – Danijel