我是 C 开发的软件工程方面的新手;有没有人有关于如何为 C 项目(尤其是嵌入式)设计错误跟踪或错误控制系统的良好指南?谈论 C 库的错误跟踪也会有帮助。
根据我的经验,这里的策略分为几个阵营。
全局变量ala的使用errno http://www.cplusplus.com/reference/clibrary/cerrno/errno/。其工作原理本质上是任何函数都可以在全局变量中存储错误代码,因此在执行该函数后,您可以读取错误代码以查看它是否正确执行。在多线程环境中工作时,存在一些明显的问题。虽然它appears http://www.unix.org/whitepapers/reentrant.htmlPOSIX.1c 指定了该问题的解决方案。
-
让每个函数返回一个错误代码。例如:
RESULT_CODE my_function(int param1, int param2);
RESULT_CODE error_code = my_function(10, 2);
这种方法的问题是您失去了直接从函数返回值的能力。
-
每个函数都有一个额外的参数来存储结果代码。例如:
void my_function(int param1, int param2, RESULT_CODE *err);
RESULT_CODE error_code;
my_function(10, 2, &error_code);
switch (error_code)
{
case RESULT_OK:
// all OK
break;
case RESULT_NO_MEM:
// out of memory
break;
// etc...
}
我已经看到这种方法在商业 RTOS 中成功使用,并且个人更喜欢它,因为我发现它的限制最少。唯一的潜在缺点是,即使您不关心结果,您也必须显式声明一个变量来存储错误代码。不过,从某种意义上说,我实际上有点喜欢这个要求,因为它迫使您不断思考如何处理错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)