6

私は.cファイルにこの構造を持っています:

struct entry {
    int position;
    int length;
    struct entry *node;
};

この構造レイアウトの範囲をホスト ファイルに限定するにはどうすればよいですか? 別のファイルで新しい構造レイアウトに同じ名前を使用する場合、「再定義」エラーが発生しません。

structの前にstaticを使用してみましたが、役に立たないようです (私も意味がありません)。ところで、リンクされたファイル間でスタックエントリを複製するときに「再定義」エラーが発生するため(MinGWを使用) 、この質問は私には有効ではないようです。

--- 追記 ---
詳しく知りたい方はこちらこちら

4

2 に答える 2

8

再定義エラーは発生しません。タイプは翻訳単位に対してローカルであり、可視性はありません。関数とデータ オブジェクトのみが表示されます。

再定義エラーが発生した場合は、ヘッダーまたは他のインクルード ファイルでその名前を使用して、最終的に同じ翻訳単位になるようにする必要があります。

于 2012-06-22T15:10:37.890 に答える
2

struct entry異なるファイルで異なることを意味したいようです。それは問題ありません: 構造体の各バージョンを定義するためのコードを異なる.cファイルに入れるだけで、別の c ファイルから ac ファイルをインクルードしたり、ヘッダー ファイルから ac ファイルをインクルードしたりしないでください。

各翻訳単位には、構造体の定義が 1 つだけ存在する必要があります。

于 2012-06-22T15:11:49.343 に答える