Skip to main content

SA0018:異常なビットアクセス

符号付き変数へのビットアクセスを検出します。ただし、IEC 61131-3 規格では、ビット フィールドに対するビット アクセスとビット シフト操作のみが許可されています。

厳格なルールも参照してください SA0147 そして SA0148

理由:符号付きデータ型をビットフィールドとして使用しないでください。その逆も同様です。 IEC 61131-3規格ではそのようなアクセスは規定されていないため、ポータブルコードを作成する場合は、この規則に従う必要があります。

重要性:中

ヒント

フラグ列挙型の例外:プラグマ属性を使用した列挙型の場合 {attribute 'flags'} フラグとして宣言され、操作によるビットアクセスに使用されます ORAND また 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

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0018: 異常なビットアクセス