gpt4 book ai didi

c++ - 在全局变量的 header 和源代码中使用 "extern int x"中的 extern 关键字是否正确?

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:05 27 4
gpt4 key购买 nike

有一个名为 BOT_TIME 的变量随我的游戏难度而变化,因此不是 const。有很多文件使用它。我打算将它用作全局变量。

1)constants.h 中,我将其声明为 extern int BOT_TIME。在 constants.cpp 中,我将其声明为 extern int BOT_TIME

BUILD => 所有源中对变量的 undefined reference (是的,我已经包含了标题)。

2)constants.h 中,我将其声明为 int BOT_TIME。在 constants.cpp 中,我将其声明为 int BOT_TIME。由于 非常量 默认为 extern ,我决定保留该关键字。

BUILD => 变量的多重定义(显示在包含 constants.h 的每个源文件中)

3)constants.h 中,我将其声明为 extern int BOT_TIME。在 constants.cpp 中,我将其声明为 int BOT_TIME

这有效。

问题出在哪里?

将变量初始化为 constants.cpp 中的内容使其适用于情况 1 和 3。

这是怎么回事?哪种方法正确?

最佳答案

您可以根据需要多次声明一个变量,您可以而且只需要定义一次。

extern int BOT_TIME;

是声明。

int BOT_TIME;

是一个定义。

定义必须出现在单个实现文件中。

Since non-consts are by default extern , I decided to leave that keyword.

没有。你怎么想的?

回答问题:

1) 没有定义,只有声明。

2) 假设是错误的。您多次定义符号。

3) 它之所以有效,是因为这是正确的方法。

来自评论:

当你用extern声明一个变量时,你指定它有外部链接,是的,但你只声明,而不定义它。如果您不使用 extern 关键字,它仍然具有外部链接,但它也是一个定义。

关于c++ - 在全局变量的 header 和源代码中使用 "extern int x"中的 extern 关键字是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455467/

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