gpt4 book ai didi

c++ - 链接头文件中的常量变量定义

转载 作者:行者123 更新时间:2023-11-30 02:06:58 26 4
gpt4 key购买 nike

假设我创建了一个头文件constants.h,这个文件包含:

extern const int YEAR = 2011; // definition

如果我在 cpp 文件 (MainCPP.cpp) 中尝试在声明它之后使用此常量而不定义它并且不包含 constants.h 文件,如下所示:

extern const int YEAR; // declaration

int main() {
cout << YEAR << endl;
}

当我尝试这样做时,我得到:未解析的外部符号“int const YEAR”。另一方面,如果我将 YEAR 的定义放在 constant.cpp 文件中并在 MainCpp.cpp 中做同样的事情,我将不会收到错误并且链接器将能够与 constants.cpp 中定义的 YEAR 链接(不包括MainCpp.cpp 中的 constants.cpp 也在这里)。

这是否意味着链接器可以链接源文件代码但不能链接头文件代码,除非您明确包含头文件。

最佳答案

头文件中的声明应该是声明,而不是定义。换句话说,不要将“= 2011”放在标题中。

这个变量需要在某处定义,比如你的main.cpp。不要将 extern 放在该定义中。

最后,如果你想在运行时给变量赋值,你不能用const限定词声明它。

关于c++ - 链接头文件中的常量变量定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346991/

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