単にキーワードを追加するのではなく、短いキーワードを再利用し(そして文脈に応じた意味を追加し)、その利点を主張する主な論拠は何ですか?
提案された新しいキーワードをすでに使用している可能性のある既存のコードを壊すことを避けたいだけでしょうか、それとももっと深い理由があるのでしょうか?
C++11 の新しい「enum クラス」が私にこのことについて考えさせましたが、これは一般的な言語設計の問題です。
ベストアンサー1
提案された新しいキーワードをすでに使用している可能性のある既存のコードを壊すことを避けたいだけでしょうか、それとももっと深い理由があるのでしょうか?
いいえ、それが理由です。
キーワードとは、定義上、いつもソース内のどこに出現してもキーワードとみなされるため、他の目的には使用できません。何かをキーワードにすると、そのトークンを変数、関数、または型名として使用している可能性のあるコードが機能しなくなります。
C 委員会は異なるアプローチを採用し、 、 などの予約名を使用して新しいキーワードを追加し_Atomic
、より適切なマクロを使用して_Bool
新しいヘッダー ( <stdatomic.h>
、<stdbool.h>
) を追加します。これにより、名前を取得するためにヘッダーを含めるかatomic
、を含めるかを選択できますbool
が、自動的に宣言されることはなく、すでにそれらの名前を使用しているコードが壊れることはありません。
C++委員会はマクロを好まず、マクロを適切なキーワードにすることを望んでいます。そのため、既存のもの( などauto
)を再利用するか、コンテキスト依存の「キーワード」(実際にはキーワードではありませんが、「特別な意味を持つ識別子」であるため、できるなど、他の目的に使用したり、override
ユーザー コードと衝突する可能性が低い奇妙なスペルを使用したり (decltype
広くサポートされているtypeof
拡張子の代わりに など) しないでください。