私は組み込みシステムで作業しており、大量のハードウェア インターフェイス#define
マクロを使用しています。これらすべてを別のファイルに入れたい (OOP ネスのため) が、そのための最善の方法がわかりません#include
。それらをすべて .c ファイルに入れてから、それを含めますか? これらを .h ファイルに入れるのはばかげているようです。
4 に答える
.h ファイルに問題はありません。
これらは.h
ファイルに入れる必要があります。もう 1 つのオプションはファイルであり、ファイルをインクルードするために.c
を使用する必要があります。これは、すべてのファイルがコンパイル済みファイルに直接対応するという標準的な仮定を使用する場合、メイクファイルを混乱させるだけでなく、人々を非常に混乱させるでしょう。#include
.c
.c
.o
通常のパターンでは、.h
ファイルは他の場所 (特に、他の複数の場所) に含まれるもの.c
用であり、ファイルはオブジェクト ファイルに一度コンパイルされるもの用です。
したがって、通常、次のものが.h
ファイルに入ります。
- 関数プロトタイプ
- 定数宣言
- グローバル変数
extern
宣言 - インライン関数定義
- 型定義
- あなたが求めているものなどのマクロ定義。
逆に、次のものは通常.c
ファイルに入ります。
- グローバル変数の定義
- オブジェクト コードにコンパイルされ、リンクされる関数定義
「関数定義はファイルにのみ入る」というケース.c
は、インライン関数がない場合の単純な退化ケースです。
多くの関数がテンプレート化された形式で定義されているため、使用するたびに定義を含める必要がある C++ では、これらの定義は.h
(または.hpp
、またはその他の) ファイルに含まれることがよくあります。したがって、この種のことには間違いなく前例があります。
必要な場所に置いてください。
1 つのファイルに対してのみ必要な場合は、そのファイルの先頭に配置します。
複数のファイルで必要な場合は、ヘッダー ファイルに入れます。