gpt4 book ai didi

C++ 局部范围内的多重声明

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

据我所知,在 C++ 中可以多次声明相同的名称,只要它在所有这些声明中具有相同的类型即可。要声明类型为 int 的对象,但不定义它,可以使用 extern 关键字。所以下面应该是正确的并且编译没有错误:

extern int x;
extern int x; // OK, still declares the same object with the same type.
int x = 5; // Definition (with initialization) and declaration in the same
// time, because every definition is also a declaration.

但是一旦我将其移至函数内部,编译器 (GCC 4.3.4) 就会提示我重新声明了 x 并且它是非法的。错误信息如下:

test.cc:9: error: declaration of 'int x'
test.cc:8: error: conflicts with previous declaration 'int x'

其中 int x = 5; 在第 9 行,extern int x 在第 8 行。

我的问题是:
如果多个声明不应该是错误,那么为什么在这种特殊情况下它是一个错误?

最佳答案

extern 声明声明具有外部链接 的内容(意味着该定义预计会出现在某个编译单元(可能是当前编译单元)的文件范围内。局部变量不能有外部链接,所以编译器会提示你试图做一些自相矛盾的事情。

关于C++ 局部范围内的多重声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185833/

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