SA0019:隐式指针转换
检测隐式生成的指针转换
理由:在 CODESYS,指针不是严格类型的,它们可以以任何方式相互分配。它经常被使用,因此编译器不会报告。但是,它也可能导致未经授权的意外访问。例如,如果您分配类型 POINTER TO DWORD
指向类型为的指针 POINTER TO BYTE
,可能会以不想要的方式覆盖内存。
因此,请务必检查此规则,仅在您故意要访问不同类型的值时才屏蔽该消息。
与之之间的转换 POINTER TO BYTE
SA0019 规则未检查数据类型。他们总是被允许的。
使用不同的消息报告隐式数据类型转换。
重要性:高
PLCOpen 规则:CP25
例外: BOOL
<-> BIT
例 54. 示例
PROGRAM PLC_PRG VAR pInt : POINTER TO INT; byteVar : BYTE; END_VAR
pInt := ADR(byteVar);
中的输出 消息 视图:
SA0019:从指针到 “指针到字节” 的隐式转换到指向 “指向整数指针” 的指针