C11 のサポートの導入に伴い、言語の文法は C89 と C99 のどちらか一方のバイナリを選択すればよいという単純なものではなくなり、3 つめの選択肢 C11 が加わりました。
Oracle Solaris Studio 12.3 では、選択肢は C99 と C89 のみで、–xc99 フラグによって制御されていました。
|
Oracle Solaris Studio 12.4 および Oracle Developer Studio 12.5 では、言語文法の選択肢 (C89、C99、または C11) は –std フラグによって制御されます。
|
–xc99 フラグと –std フラグの簡単なマッピングは次のとおりです。
|
言語文法を制御するための –Xc、–Xa、–Xt、–xc99オプションは、Oracle Developer Studio の C コンパイラでは非推奨か、今後非推奨になる予定です。
–xc99: ISO C99 または C89 言語のどちらかを選択します
–Xc: ISO C にない構文を使用しているプログラムに対してエラーや警告を発行します
–Xa: ISO C と、C 言語の拡張機能を受け入れます
–Xt: ISO C と K&R C 互換性拡張機能を受け入れます
–Xs: K&R C を受け入れます
代わりに、–std オプションを使用するようにしてください。–Xa を使用していた場合は、–pedantic オプションも一緒に使用してください。–Xt または –Xs を使用するレガシーコードは、ISO C 文法への変換が必要になります。
–xlang オプションを使用すると、標準への準拠に関連する特定の libc 関数の動作を制御できます。Oracle Solaris Studio 12.4 の C コンパイラでは、デフォルトの動作は C11 言語構造および C89 ライブラリ動作でした。このデフォルトモードでは、___STDC_VERSION__ (199409L) は C89 標準を示します。
Oracle Developer Studio 12.5 の C コンパイラでは、言語機能とライブラリ動作の両方がデフォルトで C11 モードとなり、__STDC_VERSION__ (201112L) は C11 を示します。
注記: Oracle Solaris Studio 12.3 では、この動作はサブオプション –xc99=lib によって制御されていました。