SA0018:異常なビットアクセス
符号付き変数へのビットアクセスを検出します。ただし、IEC 61131-3 規格では、ビット フィールドに対するビット アクセスとビット シフト操作のみが許可されています。
厳格なルールも参照してください SA0147 そして SA0148。
理由:符号付きデータ型をビットフィールドとして使用しないでください。その逆も同様です。 IEC 61131-3規格ではそのようなアクセスは規定されていないため、ポータブルコードを作成する場合は、この規則に従う必要があります。
重要性:中
ヒント
フラグ列挙型の例外:プラグマ属性を使用した列挙型の場合 {attribute 'flags'}
フラグとして宣言され、操作によるビットアクセスに使用されます OR
、 AND
また NOT
間違い SA0018
使われていません。
例 31. 例
PROGRAM PLC_PRG VAR iTemp1 : INT; diTemp3 : DINT; uliTemp4 : ULINT; siTemp5 : SINT; usiTemp6 : USINT; byTemp2 : BYTE; END_VAR
iTemp1.3 := TRUE; //SA0018 diTemp3.4 := TRUE; //SA0018 uliTemp4.18 := FALSE; //no error because this is an unsigned data type siTemp5.2 := FALSE; //SA0018 usiTemp6.3 := TRUE; //no error because this is an unsigned data type byTemp2.5 := FALSE; //no error because the byte is a bitfield
での出力 メッセージ ビュー:
SA0018: 異常なビットアクセス