gpt4 book ai didi

c - 如何使用 resolve MISRA C error for assembly language inline function?

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:22 26 4
gpt4 key购买 nike

我在我的 PIC32 MCU C 代码中使用编译器相关的汇编语言函数 asm()。我的代码已编译,并且仅在我的 C 代码中使用 asm("reset") 函数即可正常工作。检查 MISRA 合规性时,我收到以下 MISRA 错误:

function 'asm' undeclared, assumed to return int [MISRA 2012 Rule 17.3, mandatory]asm("reset");

asm("reset");

如何解决此汇编语言函数的 MISRA 错误?我还尝试创建函数宏来使用它,但仍然出现错误。

function 'asm' undeclared, assumed to return int [MISRA 2012 Rule 17.3, mandatory]ASM_RESET(void);

#define ASM_RESET(void) asm("reset")
ASM_RESET(void);

最佳答案

看起来 PC-Lint 没有将 asm 识别为关键字。它把它当作一个没有原型(prototype)的函数。您可以尝试将 +rw(asm) 添加到选项中。

另一方面,this forum post建议合法的方法是在仅包含程序集的独立文件中定义一个 reset 函数,并向 C 文件显示它的原型(prototype)。

重置.c:

void reset(void) {
asm("reset");
}

测试.c:

#include "reset.h"

...
reset();

关于c - 如何使用 resolve MISRA C error for assembly language inline function?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com