[解決済み] ANSI Cにはなぜ名前空間がないのですか?
2022-03-01 16:04:52
質問
名前空間を持つことは、ほとんどの言語にとって当然のことのように思われます。しかし、私が知る限り、ANSI Cはそれをサポートしていません。なぜでしょうか?将来の標準に組み込む予定はありますか?
どのように解決するのですか?
C言語には名前空間があります。一つは構造体タグ用、もう一つはそれ以外の型用です。次のような定義を考えてみましょう。
struct foo
{
int a;
};
typedef struct bar
{
int a;
} foo;
最初のものには タグ foo、後者はtypedefでfoo型にします。それでも名前の衝突は起こりません。これは、構造体タグと型(組み込み型とtypedefされた型)は別々の名前空間に住んでいるからです。
C言語が許さないのは 新しい という名前空間があります。また、名前空間を追加すると、正しく動作させるために名前のマングリングが必要になるため、後方互換性も脅かされることになります。これは、哲学ではなく、技術的な問題に起因していると思います。
EDIT JeremyPは幸いにも私を訂正し、私が見逃していた名前空間について言及しました。ラベルのための名前空間と構造体/組合のメンバーのための名前空間もあります。
関連
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] 配列の場合、なぜ a[5] == 5[a] になるのでしょうか?
-
[解決済み] 無名/匿名の名前空間と静的関数の比較
-
[解決済み] FortranはC言語よりも重い計算を最適化しやすいですか?
-
[解決済み] インライン名前空間は何のためにあるのですか?
-
[解決済み] C、C99、ANSI C、GNU Cの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】stdinとSTDIN_FILENOの違いは何ですか?
-
[解決済み】エラー:cの入力の最後に期待される宣言またはステートメント
-
[解決済み】組み込み関数「malloc」の暗黙の宣言の非互換性
-
[解決済み】ISO C90では、C言語での宣言とコードの混在が禁止されています。
-
[解決済み】デバッガgdbの使用時に不明な終了シグナルが発生する。
-
[解決済み】LEALアセンブリ命令は何をするのですか?
-
[解決済み】ヒープ割り当てで初期化されていない値が作成された
-
[解決済み】MB/sとMiB/sを計算する方法は?
-
[解決済み】malloc():メモリ破壊
-
[解決済み】c - 警告:関数 'printf'の暗黙の宣言