ヘッダーの内容
のヘッダーA.hにA.cは、で定義された機能を使用する外部コードに必要な情報のみを含める必要がありますA.c。静的関数を宣言するべきではありません。静的変数を宣言するべきではありません。内部型(でのみ使用される型)を宣言するべきではありませんA.c。ファイルがちょうど使用できることを確認してから、#include "A.h"によって公開された機能を最大限に活用する必要がありA.cます。自己完結型でべき等であり(コンパイルエラーなしで2回含めることができるように)、最小限である必要があります。#include "A.h"の最初の#include行として書き込むことで、ヘッダーが自己完結型であることを簡単に確認できます。A.c; 2回含めることで、べき等であることを確認できます(ただし、別のテストとして実行することをお勧めします)。コンパイルされない場合は、自己完結型ではありません。同様にB.hとB.c。
ヘッダーと標準の詳細については、「ヘッダーで使用する必要があり#includeますか? 」を参照してください。'はNASAのコーディング標準を参照し、'静的ライブラリに対するリンクchkhdr'には、自己完結性とべき等性をテストするために使用するスクリプトが含まれています。
リンク
、、およびにmain.o依存しますが、それ自体はヘッダーに依存しないことに注意してください。main.cA.hB.hmain.c
コンパイルに関しては、次を使用できます。
gcc -o program main.c A.c B.c
他のオプションが必要な場合は、それらを追加します(最初にほとんどのフラグ、最後にライブラリ、ソースコードの後に)。各ファイルを個別にオブジェクトコードにコンパイルしてから、オブジェクトファイルをリンクすることもできます。
gcc -c main.c
gcc -c A.c
gcc -c B.c
gcc -o program main.o A.o B.o