C++ 言語設計者はなぜキーワードを再利用し続けるのでしょうか? 質問する

C++ 言語設計者はなぜキーワードを再利用し続けるのでしょうか? 質問する

単にキーワードを追加するのではなく、短いキーワードを再利用し(そして文脈に応じた意味を追加し)、その利点を主張する主な論拠は何ですか?

提案された新しいキーワードをすでに使用している可能性のある既存のコードを壊すことを避けたいだけでしょうか、それとももっと深い理由があるのでしょうか?

C++11 の新しい「enum クラス」が私にこのことについて考えさせましたが、これは一般的な言語設計の問題です。

ベストアンサー1

提案された新しいキーワードをすでに使用している可能性のある既存のコードを壊すことを避けたいだけでしょうか、それとももっと深い理由があるのでしょうか?

いいえ、それが理由です。

キーワードとは、定義上、いつもソース内のどこに出現してもキーワードとみなされるため、他の目的には使用できません。何かをキーワードにすると、そのトークンを変数、関数、または型名として使用している可能性のあるコードが機能しなくなります。

C 委員会は異なるアプローチを採用し、 、 などの予約名を使用して新しいキーワードを追加し_Atomic、より適切なマクロを使用して_Bool新しいヘッダー ( <stdatomic.h><stdbool.h>) を追加します。これにより、名前を取得するためにヘッダーを含めるかatomic、を含めるかを選択できますboolが、自動的に宣言されることはなく、すでにそれらの名前を使用しているコードが壊れることはありません。

C++委員会はマクロを好まず、マクロを適切なキーワードにすることを望んでいます。そのため、既存のもの( などauto)を再利用するか、コンテキスト依存の「キーワード」(実際にはキーワードではありませんが、「特別な意味を持つ識別子」であるため、できるなど、他の目的に使用したり、overrideユーザー コードと衝突する可能性が低い奇妙なスペルを使用したり (decltype広くサポートされているtypeof拡張子の代わりに など) しないでください。

おすすめ記事