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: 'バイトへのポインタ' へのポインタから 'ポインタから INT へのポインタ' への暗黙の変換