外部抛出"both extern and initializer"错误
extern throwing "both extern and initializer" error
在此代码 i
中已定义(尽管extern
是初始化的(。现在我正在阅读的书说:
an extern 声明只有在似乎是 在功能外部。
它没有任何理由。
#include<iostream>
using namespace std;
int main()
{
extern int i=898;
cout<<i<<endl;
return 0;
}
我已经解决了这个问题(类似于堆栈溢出上的这个问题(,但是解释似乎并不清楚。问题是:
这两个定义如何在函数范围上有所不同:
int i=898;
extern int i=898;
在这两种情况下,正在分配一个单位int
大小内存。是由于链接错误吗?请清楚回答(IMO(,它在较旧版本中并不令人满意,其引用已被用来将其标记为重复。
extern 关键字使编译器无法为变量分配内存,这表明该变量的内存将在全局范围中的链接时间解决。您与另一个答案的链接不可用,所以我回答了。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- 当初始值设定项是基类名时'initializer does not name a non-static data member or base class'错误
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- C2664 无法从'initializer list'转换参数
- python ctypes and C++ pointers
- 外部抛出"both extern and initializer"错误