gpt4 book ai didi

c++ - C++ 中的外部常量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:29 26 4
gpt4 key购买 nike

我有一个名为 abc.h 的头文件,我想在其中定义一个带有外部链接的常量。因此它包含声明

----------------abc.h------------------------

extern const int ONE = 1;

接下来,我有 main.cpp,我想在其中使用 ONE 的值。因此,在将它用作

之前,我在 main.cpp 中声明了一个

----------------main.cpp--------------------

extern const int ONE;
int main()
{
cout << ONE << endl;
}

我收到错误消息“ONE 的多个定义”。

我的问题是,我如何声明一个带有外部链接的常量,然后在不同的文件中使用它,这样常量只有一个内存位置,而不是每个文件都包含常量的静态版本。


我从 main.cpp 中删除了#include "abc.h",一切正常。

g++ abc.h main.cpp -o main

ONE 的地址在 header 和 main 中是一样的。所以它有效。

但我不明白编译器如何在 main.cpp 中没有 include 语句的情况下解析 ONE 的定义

似乎 g++ 有一些魔力。这是一种不好的做法吗,因为 main.cpp 中没有包含“abc.h”,所以 main.cpp 的读者不知道 ONE 在哪里声明?

最佳答案

abc.h:

extern const int ONE;

abc.cpp:

#include "abc.h"

const int ONE = 1;

ma​​in.cpp:

#include "abc.h"

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

关于c++ - C++ 中的外部常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9661146/

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