gpt4 book ai didi

c++ - C++ : Cannot I assign values to a variable in header file?

转载 作者:太空狗 更新时间:2023-10-29 19:46:11 24 4
gpt4 key购买 nike

header.h

int m_linkinfo;
m_linkinfo = 1;

ma​​in.cpp

#include "header.h"

int main()
{
return 0;
}

失败,有很多错误。但是,如果我注释了 m_linkinfo = 1; 行,则一切正常。为什么?我不能为头文件中的变量赋值吗?但是如果我把header文件改成只有一行:int m_linkinfo = 1;,程序就编译成功了!为什么?和上面两行代码有区别吗?

最佳答案

不,你不能。这是一段代码,因此它需要存在于某种函数中,例如:

int main () {
m_linkinfo = 1;
return 0;
}

如您所见,您可以初始化它:

int m_linkinfo = 1;

但是,因为这是标准允许的。

请记住,在头文件中定义通常是有风险的。通过定义,我指的是创建事物的语句,而不是那些简单地通知编译器事物存在(声明)的语句。

这是因为在两个不同的翻译单元中包含 header 会导致同名事物的两个拷贝,如果您随后尝试将它们链接在一起,就会遇到麻烦。

解决这个问题的最好方法是在头文件中声明,例如:

extern int m_linkinfo;

并在非 header (例如 CPP)文件中定义它们:

int m_linkinfo = 1;

这样,每个包含 header 的翻译单元都知道 m_linkinfo,但只有 CPP 文件创建它。

关于c++ - C++ : Cannot I assign values to a variable in header file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313174/

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