我正在开发一个由多个模块组成的应用程序,这些模块被构建为静态库。看起来像
root
|__module1
| |__mod1.h
|
|__module2
| |__mod2.h
|
main.c
mod1.h
(省略标题保护):
//returns 0 on success error code otherwise
int do_mod1();
mod2.h
(省略标题保护):
//returns 0 on success error code otherwise
int do_mod2();
我在库头中定义了错误代码:
mod1.h
:
#define MOD1_ERROR 1
int do_mod1();
mod2.h
#define MOD2_ERROR 2 //1 can not be used otherwise it would introduce a conflict
int do_mod2();
问题在于模块之间的错误代码之间可能存在冲突,从而导致彼此之间不必要的依赖性。
因此,我决定引入extern
声明,将错误代码放在模块中单独的标头中,并在使用这些模块的应用程序中提供定义。像这样:
mod1err.h
:
extern const int mod1_error;
mod2err.h
:
extern const int mod2_error;
application_error.h
:
#include mod1err.h
#include mod2err.h
const int mod1_error = 1;
const int mod2_error = 2;
以这种方式使用extern
声明是一种好习惯,否则可能会有更好的方法?