共用体型変数を記述した翻訳単位を-merge_filesを指定してコンパイルするとF0530800またはW0530811が発生する制限事項
[発生条件]
次の条件を全て満たす場合、F0530800またはW0530811が発生する可能性があります。
(1) | -merge_filesまたは-whole_programを指定している。 |
(2) | 2つ以上のメンバを持つ共用体型外部変数を初期化しており、かつ初期化対象のメンバ以外に、アライメントとサイズの両方が他のいずれのメンバよりも大きいメンバが存在する。 |
(3) | (2) に該当する変数を次のいずれかでextern宣言し、参照している。 |
(3-1) (2) の外部変数定義が存在するソースファイルと別のソースファイル。
(3-2) (2) の外部変数定義が存在するソースファイルと別のソースファイルから、直接、または間接的にインクルードされているヘッダファイル。
[回避策]
次のいずれかの対応を実施してください。
(1) | 発生条件 (1) のオプションをいずれも指定しない。 |
(2) | 発生条件 (2) における"初期化"を関数内で実施する。 |
(3) | 発生条件 (2) に該当する変数を、その外部変数定義を記述したソースファイル内でのみ参照する。 |