SA0016:構造のギャップ
現在設定されているターゲットシステムのアライメント要件によって引き起こされる構造または機能ブロックのギャップを特定します。可能であれば、構造要素を再配置するか、ダミー要素で埋めることによって、ギャップを削除する必要があります。これが不可能な場合は、プラグマを介して影響を受ける構造のルールを使用できます analysis 非アクティブ化します。
理由:プラットフォームごとに配置要件が異なるため、このような構造のメモリには異なるレイアウトが存在する可能性があります。その後、コードはプラットフォームに応じて異なる動作をする可能性があります。
重要度:低
例 29. 例
TYPE Unpadded_Structure :
STRUCT
xTest : BOOL;
iTest : INT; // SA0016
byTest : BYTE;
wTest : WORD;
END_STRUCT
END_TYPE
PROGRAM PLC_PRG
VAR
myStruct : Unpadded_Structure;
END_VAR
myStruct.iTest := 0;
での出力 メッセージ ビュー:
SA0016: 構造体「Unpadded_Structure」はパディングする必要があります (pack-mode=8)