我正在玩 C++ 中的多个文件,并且我得到了以下示例,但无法编译:
主文件
#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;
}
常量.hpp
#ifndef CONST_H
#define CONST_H
double var;
#endif
我的程序无法编译,因为显然存在 var 的多重定义。我是否正确地假设,基于这个例子,头文件不打算用于声明变量,就像我上面的例子一样?
相反,正确的过程是在 .cpp 文件中声明所有变量并使用标题告诉每个(相关)翻译单元 .cpp 文件包含外部(extern)变量?
编辑:我的规则的例外是在处理常量变量(const)时是否正确,它应该在标题中定义?