2016-08-05 10 views
-2

最近、Cortex-M4チップを搭載したTIVA Cシリーズのラウンチパッドボードを使って作業しています。 IDEとしてCode Composer Studioを使用します。.cと.hファイルを含むことについての混乱

試行錯誤の結果、チップメーカーが提供する特定の機能を使用するためには、.hファイルを含める代わりに.cファイルを含める必要があるため、現在混乱がたくさんあります。 。

これは私を守ってくれました。コンパイラデザインについては、私が専門家のプログラマーでも専門家でもないことを認めています。しかし、コンパイラが.hファイルを必要とせずに.cファイルを必要とする理由を知っている人はいますか?

.hファイルには、.cファイルに必要な定義が含まれているため、まだ使用されています。

おそらく、より良い質問は、このことがあります

.hファイルと.cファイルが存在し

、あなたのコード内の.cファイルを含めるか、.hファイルが含まれますか?

私の試行錯誤の練習では、.cファイルを含める必要があると言われていますが、私は実際のルールが何であるかについて全盲でいます。

ご迷惑をおかけして申し訳ございません。私はmain.cファイルを共有しても問題ありません。ファイルをどのようにインクルードしたのか分かりますが、私の質問は、.hとaの両方があるときにファイルを含める一般的な規則についての質問です。 .cファイル。

いつでもありがとうございました。私にこの問題を理解させていただきありがとうございます。

EDIT:なぜダウン票ですか?私はここに助けを求めて来ると思ったのですが、この場所についてのことでしたか?

+0

.cファイルを含める必要がありますか? [XY問題](http://xyproblem.info/)に注意してください。 – MikeCAT

+1

私はこの問題が、あなたがcファイルをビルドまたはリンクしていない可能性があると思います。 –

+0

downvoteボタンのヒントは「この質問には研究努力は示されていませんが、それは不明確または有用ではありません。私はdownvoteをしなかったが、ここではあなたの質問が研究努力の欠如を示すと考えるだろうと信じていた。 –

答えて

2

実質的にすべてのCプログラムが複数のソースファイルから構築されていることを理解することが重要です。いくつかの状況下では、これらのソースの多くは1つまたは複数のライブラリにあらかじめコンパイルされていますが、Cプログラムを構築するには、複数のCソースファイルを作成し、それらを相互にまた適切なライブラリにリンクして、 。

Cが複数の互換宣言機能およびファイルスコープ変数のを可能にするが、それはどこでも、プログラム全体の各別個の機能または変数の一つだけ定義を可能にすることを理解することも重要です。これは、ヘッダーファイル(通常は.hという名前の拡張子)に宣言を挿入するという慣習の主な理由です。与えられたプログラムに寄与する任意の数のソースファイルは同じヘッダファイルであるかもしれませんが、最大でも#includeのソースファイルに対応する定義が含まれていて、そのファイルがビルドに直接含まれていない場合に限ります。

#includeのファイルに.cの必要な定義がすべて含まれているように、メインのソースファイルを書き込むことができます。この場合、ヘッダーを含める必要はありませんが、2つの別々のソースファイルを作成することはできませんそれが重複した関数定義を生成する場合、同じプログラムに寄与する。結局のところ、このアプローチは失敗する可能性があります。特定のコンパイラが管理できるソースファイルの大きさや複雑さには限界があります。

チップメーカーのCソースファイルに付随するヘッダーファイルがある場合、独自のソースファイルにはこれらのヘッダーのみを含める必要があります。そのようなソースからオブジェクトファイルを作成することはできます。ただし、実行可能プログラムをビルドするには、チップ製造元のCソースをビルドして、自分自身にリンクする必要があります。チップメーカーのソースを含むライブラリを作成してリンクすることは賢明ですが、すべてのプログラムに必要なソースファイルを直接作成することもできます。 IDEは両方のオプションをサポートする必要があります。

関連する問題