私は自分のオペレーティングシステムクラスに対して異なるページ置換アルゴリズムを実装するための宿題を手掛けています。私はに実行している問題は、私は別のCファイル内の各アルゴリズムを実装したいということで、私はコンパイル時に個々のファイルの中に、など、search()
、insert()
、updatePageTable()
ようしかし別のCファイルの関数を1つだけ含める方法
同じ関数名を使用しますファイルをコンパイルすると、重複するシンボルについて不平を言う。メインのテスト関数をそれぞれの異なるアルゴリズムファイルからインポートし、それらの関数がファイルの関数を参照するようにする方法はありますか?
[このXY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)の代わりに実際の問題を説明できますか? –
ファイル内の関数を 'static'と宣言することで隠すことができます。これは良い習慣です。あなたは隠されていない少なくとも1つの関数を持っています(時には 'main()'になることもありますが、時には他の関数になることもあります)。非静的関数が 'main()'でなければ、その関数を宣言するヘッダを持つべきです。ヘッダーは、定義が宣言と一致するように関数が実装されている場所で使用し、ヘッダーは関数が正しく使用されるようにするために関数を使用する場所で使用する必要があります。 –
与えられたプログラムは、与えられた関数名の外部から見える定義を1つだけ含むことができます。つまり、 'insert()'と呼ばれるグローバルな(外部から見える)関数を定義するファイルはたかだか1つだけですが、 'insert()'という静的関数を定義するファイルがたくさんあるかもしれませんが、グローバル関数を宣言したり、宣言したりしています。 –