类似下面的代码:
uint8 i = 0U;
uint8 *p;
p = &i; //这句会#1393-D (MISRA-C:2004 10.1/R) The value of an expression of integer type shall not be implicitly converted to a different underlying type if the expression is complex
然后改成
p = (uint8*)&i; //会有(这个非常不明白)#1395-D (MISRA-C:2004 10.3/R) The value of a complex expression of integer type shall only be cast to a type of the same signedness that is no wider than the underlying type of the expression
改成
p = &((uint8)i); //会有#160 expression must be an lvalue or a function designator
有没有大牛能告诉我,我要怎么取地址才没有这些告警啊?在线坐等啊
2 个解决方案
#1
http://blog.csdn.net/pony_maggie/article/details/5270335
个人感觉其实是错在这里了:
uint8 i = 0U;
要改成:
unit8 i = (uint8) 0U;
个人感觉其实是错在这里了:
uint8 i = 0U;
要改成:
unit8 i = (uint8) 0U;
#2
这个本地试了下,确实不行。对i取地址的时候,i的值应该是不影响这个操作的。
#1
http://blog.csdn.net/pony_maggie/article/details/5270335
个人感觉其实是错在这里了:
uint8 i = 0U;
要改成:
unit8 i = (uint8) 0U;
个人感觉其实是错在这里了:
uint8 i = 0U;
要改成:
unit8 i = (uint8) 0U;
#2
这个本地试了下,确实不行。对i取地址的时候,i的值应该是不影响这个操作的。