構造体を使用する .c ファイルでのみ表示される構造体型を宣言することは可能ですか? 外部データ オブジェクトの前にstaticを配置することで、変数のリンケージが内部に変更されることを私は知っています。しかし、次のように、新しい構造体型の宣言の前にstaticを置くことは可能ですか?
static struct log{
...;
...;
};
typedef struct log log;
上記のようにログなどの構造タイプを「プライベート」にすることができない場合、他のソースファイルが構造の名前 (私の例ではログ) の存在を認識していなくても、ということですか? 、いくつかの変数ログに名前を付けると、偶発的な名前の衝突が依然として発生する可能性があります(すべてのオブジェクトファイルをリンクすると仮定します)?
編集:コンパイラ/リンカーの仕組みに慣れていません。グローバル変数名logがあり、グローバル変数を含むファイルが、構造logが定義されている唯一のソース ファイルにリンクされている場合、リンク時に混乱が生じることはありません。1 つのログは変数名であり、別のログは別のログです。型名ですか?