gpt4 book ai didi

c++ - 在 C++ 中正确使用 header

转载 作者:行者123 更新时间:2023-11-30 00:54:00 28 4
gpt4 key购买 nike

我正在用 C++ 处理多个文件,我得到了以下无法编译的示例:

主要.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;

}

常量.hpp

#ifndef CONST_H
#define CONST_H

double var;

#endif

我的程序无法编译,因为显然有 var 的多重定义。根据这个例子,我假设头文件不是是为了像我上面的例子那样用于声明变量吗?

相反,正确的程序是在 .cpp 文件中声明所有变量并使用 header 告诉每个(相关)翻译单元该 .cpp 文件包含一个外部 (extern) 变量?

编辑:我上面的规则的一个异常(exception)是处理常量变量 (const) 时是否正确,它应该在标题中定义?

最佳答案

double var; 是一个定义 - 在多个文件中包含该 header 将违反一个定义规则。如果你想要一个全局的(三思而后行),你必须在 header 中声明它 - extern double var; 并将定义移动到单个实现文件。

关于c++ - 在 C++ 中正确使用 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091258/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com