私はいくつかの仕事をする機能を持っています。
ああ
void doSomething(int n);
A.cpp
#include "A.h"
void doSomething(int n) {
/* something */
}
この関数を別のソース ファイルで使用したい場合、最適な選択は次のとおりです。
1) ああを含む
B.cpp
#include "A.h"
void anotherTask() {
// ...
doSomething(5);
// ...
}
2) または前方宣言 (関数プロトタイプ) を使用します。
B.cpp
void doSomething(int);
void anotherTask() {
// ...
doSomething(5);
// ...
}
クラスに対してできるだけ頻繁に前方宣言を使用するためのヒントがたくさんあります。では、関数の前方宣言のベスト プラクティスは何ですか?
UPD
わかりました、これは簡単すぎる例です。
ヘッダー Ah にゴミがある場合 (ドライバーレベルについて何も知らない B.cpp と比較して):
ああ
#include "specific_driver_header.h" /* some lowlevel stuff that B.cpp couldn't know */
#define SPECIFIC_DRIVER_DEFINES 0xF0 /* useless define for B.cpp that uses global namespace */
void doSomething(int n); /* only significant function for B.cpp */
Ah を B.cpp に含めると、B.cpp はドライバーに依存しなくなります。その場合、バリアント (2) を使用する必要がありますか?