有没有人有一个很好的指南,对于C设计和错误跟踪/控制系统? [英] Does anyone have a good guide to designing and error tracking/control system for C?

查看:138
本文介绍了有没有人有一个很好的指南,对于C设计和错误跟踪/控制系统?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是新的C开发的软件工程的一面;没有任何人有关于如何设计一个错误跟踪或错误控制系统,一个C项目(特别是嵌入式)一个很好的指导?一些谈论跟踪误差为C库将是有益的了。

I'm new to the software engineering side of C development; does anyone have a good guide on how to design an error tracking or error control system for a C project (especially embedded)? Something talking about error tracking for C libraries would be helpful too.

推荐答案

在我的经验,这里的策略分成几个阵营。

In my experience the strategies here fall into a few camps.


  • 全局变量使用翼错误号。这是如何工作基本上是任何功能可以存储在全局变量错误code,所以在执行函数后,你可以读取错误code,看它是否正确执行。在多线程环境中工作时,有一些明显的问题在这里。虽然出现的POSIX.1c指定一个解决这一问题。

  • Use of global variables ala errno. How this works is essentially any function can store an error code in the global variable, so after executing the function you can read the error code to see if it executed properly. There are some obvious issues here when working in a multithreaded environment. Although it appears that POSIX.1c specifies a solution to that problem.

在每次函数返回一个错误code。例如:

Have every function return an error code. For example:

RESULT_CODE my_function(int param1, int param2);


RESULT_CODE error_code = my_function(10, 2);


这种方法的问题是,你失去了你要直接从函数的返回值的能力。

The problem with this approach is that you lose your ability to return values from the function directly.


  • 每个函数都有一个存储结果code一个额外的参数。例如:

  • Every function has an extra parameter that stores the result code. For example:

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成功使用,并亲自preFER它,因为我觉得它限制最少的。唯一的潜在的缺点是,你必须明确地声明一个变量来存储错误code,即使你不关心结果。从某种意义上说其实我喜欢这样的要求,不过,因为它迫使你必须不断思考的错误将如何处理。

I've seen this approach used successfully in commercial RTOS, and personally prefer it since I find it the least restrictive. The only potential disadvantage is that you have to explicitly declare a variable to store the error code, even if you don't care about the result. In some sense I actually kind of like that requirement, though, since it forces you to be constantly thinking about how errors are going to be handled.

这篇关于有没有人有一个很好的指南,对于C设计和错误跟踪/控制系统?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆