だから私は あなたのインクルードの順序 を読みました、そしてこの男はあなたがそれが前提条件を持っていないことを確認するためにあなたが最初にあなたのローカルヘッダーをインクルードすることを提案しました。わかりました。私は乗船しています。全体の区画化は良いです。
しかし、私はこのファイルfile.cを持っています。これには、ファイルを保存する関数を宣言するfile.h
が含まれています。これは、fopen
とその友人が使用するFILE*
タイプを渡します。
file.h
をインクルードする前にstdio.h
をインクルードすると、file.h
タイプがわからないため、FILE*
をビルドするときに明らかな解析エラーが発生します。
私は単純なものを見逃さなければならないことを知っていますが、これをグーグルが使用できるものに定式化することができます。 file.h
で何か違うことをする必要がありますか?これは単に特定の順序で含める必要があるものですか?考え?
file.h
などのヘッダーファイルがstdio.h
などの他のヘッダーに依存している場合、file.h
は必要に応じてそれらのヘッダーを#include
する必要があります。
各ヘッダーファイルは、それ自体の依存関係を追跡し、#include
ガードを使用して、複数回インクルードされた場合に複数の翻訳を防止する必要があります。
#ifndef FILE_H
#define FILE_H
#include <stdio.h>
...
void myfunc(FILE *);
...
#endif
このように、インクルードの順序は単純に関係ありませんであり、これによりメンテナンスが多くクレイジーになりません。