8.109 --interface_enums_are_32_bit

列挙型のサイズという点で、外部コードインタフェースとの互換性の確保に役立ちます。

使用法

--enum_is_int を使用してコンパイルしたオブジェクトファイルは、--enum_is_int を使用せずにコンパイルした別のオブジェクトファイルとリンクできません。リンカは、列挙型が外部インタフェースに影響を与える方法で使用されるかどうかを判断できないので、これらのビルドの違いを検出すると、警告またはエラーを生成します。--interface_enums_are_32_bit を使用してコンパイルすると、この問題を防ぐことができます。コンパイルされたオブジェクトファイルは別のオブジェクトファイルとリンクでき、列挙型のサイズが異なることが原因でリンカによって競合が検出されることはありません。

このオプションを使用すると、外部インタフェースで使用されるすべての列挙型が 32 ビット幅であることをコンパイラに対して保証することになります。たとえば、宣言するすべての enum に 2 の 16 乗より大きな値が少なくとも 1 つ含まれるようにした場合、--enum_is_int を使用するかどうかにかかわらず、コンパイラは強制的に enum を 32 ビット幅にするようになります。ユーザは、コンパイラに対して行った保証が確実に守られるようにする必要があります(外部インタフェースに enums が含まれていないことを確認することによって、この条件を満たすこともできます。)

デフォルト

デフォルトでは、すべての列挙子の値を保持できる最小のデータ型が使用されます。
関連する参考文書
8.72 --enum_is_int
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.