ホームページ > バックエンド開発 > C++ > 指定イニシャライザが C 11 から除外されたのはなぜですか?

指定イニシャライザが C 11 から除外されたのはなぜですか?

Barbara Streisand
リリース: 2024-12-28 10:52:14
オリジナル
118 人が閲覧しました

Why Were Designated Initializers Excluded from C  11?

C 11 の指定イニシャライザ: 除外の根拠

C99 では、提供されているコード スニペットなどで指定イニシャライザ リストの使用が許可されています。 , C 11 はこの機能を禁止しています。 C 11 標準委員会によるこの決定により、なぜこのような便利な機能が除外されたのかという疑問が生じます。

C.1.7[diff.decl].4: C の制限事項 :

C で指定されたイニシャライザを導入すると、いくつかの問題が発生する可能性があります。チャレンジ:

  • Indeterminate Evaluation Order: C99 では、指定された初期化子の評価順序が指定されていないため、初期化されたメンバーが相互作用する場合に未定義の動作が発生する可能性があります。対照的に、C では初期化子リストの厳密な評価順序が強制され、そのような問題が防止されます。
  • C99 との一貫性のない動作: C で指定された初期化子を許可するには、既存の C99 実装との互換性を破壊する必要がありました。特定の評価順序を強制します。これにより、移植性に関する潜在的な懸念が生じます。
  • ネストされた指定子と配列の初期化: C99 では、ネストされた指定子と配列指定の初期化も許可されています。これにより、C 言語がさらに複雑になり、次のような懸念が生じます。一貫性のない動作。

結論:

C 11 標準委員会は、指定された初期化子リストを除外することを選択する際に、互換性の問題や一貫性のない動作の可能性だけでなく、これらの技術的な制限も慎重に検討しました。代わりに、C は、予測可能な動作を保証し、既存のルールとの互換性を維持するために、初期化子リストに厳格な評価順序を提供します。

以上が指定イニシャライザが C 11 から除外されたのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート