私は C++ で複数のファイルをいじっていますが、次の例はコンパイルされません。
main.cpp
#include <iostream>
#include "const.hpp"
using namespace std;
int main()
{
extern double var;
var = 5;
cout << var << endl;
return 0;
}
fct.cpp
#include <iostream>
#include "const.hpp"
using namespace std;
void func()
{
extern double var;
cout << var << endl;
}
const.hpp
#ifndef CONST_H
#define CONST_H
double var;
#endif
どうやらvarの複数定義があるため、私のプログラムはコンパイルされません。この例に基づいて、ヘッダー ファイルは上記の例のように変数を宣言するために使用されることを意図していないと仮定するのは正しいですか?
代わりに、正しい手順は、.cpp ファイル内のすべての変数を宣言し、ヘッダーを使用して、.cpp ファイルに外部 ( extern ) 変数が含まれていることを各 (関連する) 翻訳単位に伝えることですか?
編集:ヘッダーで定義する必要がある定数変数(const)を扱う場合、上記の私のルールの例外は正しいですか?