【发布时间】:2017-06-22 14:08:51
【问题描述】:
我不确定为什么静态代码分析工具 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 };。
为什么它会引发标志以及如何解决这个问题?
【问题讨论】:
-
永远不要
memcpyvolatile合格的对象!memcpy不保证任何访问顺序。问题是为什么你使用volatile。好像不是硬件寄存器,所以很可能是错的! (volatile不适合线程间通信。)