1

我的 CCS 6.1 ARM 编译器(用于 LM3Sxxxx Stellaris)会引发警告:

“MISRA 规则 10.1。如果表达式不是常量并且是函数参数,则整数类型表达式的值不应隐式转换为不同的基础类型”

对于以下代码:

static uint32_t diagBaseAddress;

void diagCbGetBaseAddress(uint32_t * addr);

...
diagCbGetBaseAddress(&diagBaseAddress); // line where warning is issued
...

我在我的代码中没有看到问题。是误报还是我的错误?

4

1 回答 1

1

是的,这是一个误报。MISRA-C:2004 的规则 10.1 关注整数类型的隐式类型提升。指针与该规则无关。

尽管确保没有相邻的代码行包含实际问题,但该工具可能只是指向错误的行。

(我可以说它是 2004 版本,因为它提到了底层类型。在 2012 版本中,底层类型的概念被替换了。)

于 2015-09-14T11:50:29.933 回答