MISRA C:2012 Dir-4.3 3006解析
MISRA-C:2012 规则适用于消息3006:Dir-4.3(必要)汇编语言应该被封装并隔离
规则
1、规则与等级对应关系(QAC)
2、3006 This function contains a mixture of in-line assembler statements and C statements.在C语句的文本中,嵌入了汇编代码。当函数定义中同时有汇编代码和可执行C语句时,除非汇编代码被封装在宏中,否则将会生成消息3006。
官方示例
1、#define ASM asm { ... }extern int sia;extern int sib;extern void foo1(void) /* No Message */{ int x; ASM; asm ( Some assembler code ); return;}
2、extern void foo2(void) /* Message 3006 */{ int x = 100 ; asm( Some assem芟鲠阻缒bler code ); return;}extern void foo3(void) /* Message 3006 */{ char *msg = "hello"; asm { Some assembler code } return;}
3、extern void foo4(void) /* Message 3006 */{ __asm { Some assembler code } sia = sib; return;}extern void foo5(void) /* Message 3006 */{ asm ( Some assembler code ); sia += sib; return;}
编程规范修改举例
1、NO
2、YES