检测隐式生成的指针转换
理由在CODESYS 中,指针没有严格的类型划分,它们可以以任何方式互相赋值。这种情况经常使用,因此编译器不会报告。不过,它也可能意外导致意外访问。如果将POINTER TO BYTE
赋值给POINTER TO DWORD
,则可能会无意中使用后一个指针覆盖内存。因此,在有意访问不同类型的值时,请务必检查该规则并阻止该消息。
隐式数据类型转换会以不同的信息报告。
重要性:高
PLCopen 规则:CP25
异常:BOOL
<-> BIT
示例
PROGRAM PLC_PRG VAR pINT : POINTER TO INT; byteVar : BYTE; END_VAR pINT := ADR(byteVar); --> SA0019: Implicit conversion from pointer to 'POINTER TO BYTE' to pointer to 'POINTER TO INT'