我们的组织有一个必须遵守的编码规则(没有任何解释):在if…else if结构中应该以else子句结束。 示例1:if ( x < 0 ) { x = 0; } /* else not needed */ 例子2:if ( x < 0 ) { x = 0; } el...
MISRA C 2012指令4.12是"不应使用动态内存分配"。作为示例,该文档提供了以下代码示例:char *p = (char *) malloc(10); char *q; free(p); q = p; /* Undefined behaviour - value of p is i...
在我的当前项目中,我们使用MISRA 2004标准,使用三个GCC编译器版本3.2.3、4.4.2和5.4.0。我们使用严格检查构建,包括pedantic开关、c89标准和许多其他限制。其中之一是所有数据必须在声明时初始化。问题在于,在GCC 3.2.3上,通用的零初始化器{0}只适用于基本单...
我曾以为这些术语是同义词,但MISRA中关于死代码的注释表示这种想法是错误的。它们有何区别?其中一个是否是另一个的子集?
我在我的项目中切换到了固定长度的整型,主要是因为它们在使用时可以更清晰地思考整数大小。通过 #include <inttypes.h> 引入它们还会包括一堆其他宏,比如打印宏 PRIu32、PRIu64 等。 要将常量值分配给固定长度变量,可以使用像 UINT32_C() 和 I...
我有一个需求需要大量的代码符合MISRA标准。 第一个问题:有经验的人能给出一个通过嵌入式系统中的良好编写的代码的估计时间吗?我知道“良好编写”的定义模糊不清,因此我请求提供原始估计。 第二个问题:有没有推荐的工具可以进行自定义(即允许抑制特定警告)并且可以在自动构建环境中使用(即命令行界面)...
在调试一些嵌入式代码时,我遇到了类似这样的情况:buffPtr = &a[5]; buffEndPtr = &a[10]; while (buffPtr != buffEndPtr) { *buffPtr = 0xFF; buffPtr = &...
我经常在 C 语言中编写一些函数,用于检查某些参数并返回错误代码。 当我发现一个错误时,最好的做法是什么? 第一个示例:ErrorCode_e myCheckFunction( some params ) { ErrorCode_e error = CHECK_FAILED; i...