2016-11-06 6 views
1

私はCでヘッダーファイルの使用方法を学びたいと思っていますが、私の研究ではほとんどリソースが見つかりませんでしたが、目的の効果が得られませんでした。Cでヘッダーファイルを使用する

まず、thisチュートリアルでは、ヘッダファイル自体に関数を書くことができます。しかし、私はそれをしたくありません。インターフェイスが変更されていないと仮定してコードを変更しても、ヘッダーファイルを変更しないでください。

this質問には2つの方法があります。まず、私は別にコードとヘッダファイルを書き込むと、次のように私はコンパイル時にそれらを含めることができます。

gcc -o myprog test.c library.c 

しかし、私はどちらかそれを行うにはしたくありません。私のライブラリ関数は、コンパイル行に含めることなくすぐに利用できるようにする必要があります。同じ回答によると、私はライブラリを作成して-lスイッチでリンクすることができました。しかし、printfのような関数については、どちらかを実行する必要はありません。あなたがしなければならないのは、ヘッダーファイルを含めることだけです。それを行う方法はありますか?

  1. は、ヘッダファイル自体に実装する必要はありません:; TLため

    概要DR

    は、私はC言語でライブラリを書きたいです。

  2. ライブラリ関数を使用するたびに、コンパイル行に含める必要はありません。

  3. ライブラリ関数を使用するたびに-lとリンクする必要はありません。

  4. 基本的に、ライブラリはヘッダファイルのみを使用して使用する必要があります。

Linuxでこれを実行できますか?

+0

昔は、共有ライブラリが標準になる前に、システムCライブラリにコードを追加することができました。決して良いアイデアではありませんでした。システムライブラリへの更新があれば、あなたの追加を捨てるでしょう。しかし、それはできます。それ以外の場合は、リンカーを実行してライブラリを自動的にリンクするようにCコンパイラを設定する方法を見つける必要があります。それはおそらく実行可能です。しかし、努力する価値はありません。 (やはり、コンパイラの変更はおそらく、コンパイラを更新するたびに変更する必要があることを意味します)。単に '-lwhatever'を使うべきです。 –

答えて

2

しかし、printfのような関数については、どちらかを実行する必要はありません。あなたがしなければならないのは、ヘッダーファイルを含めることだけです。それを行う方法はありますか?

短い答えは「いいえ」です。長い答えは、Cコンパイラがprintfを実装するライブラリを含むいくつかのライブラリを "無料"でリンクすることです。

これらの「無料サービス」を辞退するオプションがあります.gccでは-nodefaultlibsです。このオプションを追加すると、printfが失われます。

注:ヘッダーが実装できることの1つはマクロです。しかし、マクロは通常の関数のように動作しないので、マクロには十分注意してください。

関連する問題