2017-06-22 87 views
0

我不知道为什么静态代码分析工具Coverity的标志:为什么保险标志会为此发出警告?

CID 40172 (#1 of 1): Parse warning (PW.INCOMPATIBLE_PARAM) 
1. incompatible_param: argument of type "volatile mpls_RuntimeInfo_t *" is incompatible with parameter of type "void *" 

这条线:

memset(&SW_RuntimeInfo[idx],0,sizeof(mpls_RuntimeInfo_t)); 

SW_RuntimeInfo声明为在全球范围内volatile static mpls_RuntimeInfo_t SW_RuntimeInfo[LABEL_T_CNT] = { 0 };
它为什么会升起国旗&我该如何解决这个问题?

+3

从来没有'memcpy''挥发性'合格的对象! 'memcpy'不保证任何访问顺序。问题是**为什么**你会使用'volatile'。它似乎不是一个硬件寄存器,所以它很可能是错误的! ('volatile'不适用于线程间通信。) – Olaf

回答

1

它会抛出警告,因为您将易失性指针传递给非易失性参数。如果你真的想让警告消失,只需将你的参数投到void *。但是,也许你应该重新访问你的变量是否是不稳定的,或者以不同的方式初始化它。

相关问题