C++ヘッダファイルにはどんなものを置くべきではありませんか?
1554 ワード
まず説明します:以下のプログラムはC++言語を対象としています
ダイレクト・アップ・コード(プログラムにエラーがあります):
file1.hファイルは以下の通りである.
file1.hファイルは以下の通りである.
file1.hファイルは以下の通りである.
まとめ:1.ヘッダファイルにint aが表示されないでください.このような定義は、衝突しやすい(問題を再定義する).
2. ヘッダファイルにvoid fun(){}のような非インライン関数定義が現れず、衝突しやすい(再定義問題).
最後に、C++プログラムに対して、Cプログラムの中で、少し違います.
ダイレクト・アップ・コード(プログラムにエラーがあります):
file1.hファイルは以下の通りである.
#ifndef HEADER_FILE1
int a;
#define HEADER_FILE1
#endif
file1.cppファイルは以下の通りです.#include "file1.h"
main.cppファイルは以下の通りです.#include "file1.h"
int main()
{
return 0;
}
上のプログラムは接続時にエラーが発生します.なぜですか.file 1にあるからです.cppとmain.cppにはaが同時に現れ、衝突し、衝突した.上記のプログラムは(正しいプログラム)に変更できます.file1.hファイルは以下の通りである.
#ifndef HEADER_FILE1
#define HEADER_FILE1
#endif
file1.cppファイルは以下の通りです.#include "file1.h"
int a;
main.cppファイルは以下の通りです.#include
#include "file1.h"
using namespace std;
extern int a; // , a
int main()
{
cout << a << endl;
return 0;
}
もちろん、プログラムの多くのファイルに円周率が使われている場合は、どうすればいいですか.以下の方法を使用できます.file1.hファイルは以下の通りである.
#ifndef HEADER_FILE1
const float pi = 3.14f;
#define HEADER_FILE1
#endif
file1.cppファイルは以下の通りです.#include "file1.h"
// pi
main.cppファイルは以下の通りです.#include
#include "file1.h"
using namespace std;
int main()
{
cout << pi << endl;
return 0;
}
上のプログラムは完全に正しいので、衝突は発生しません.まとめ:1.ヘッダファイルにint aが表示されないでください.このような定義は、衝突しやすい(問題を再定義する).
2. ヘッダファイルにvoid fun(){}のような非インライン関数定義が現れず、衝突しやすい(再定義問題).
最後に、C++プログラムに対して、Cプログラムの中で、少し違います.