c++ - 'initialization'到底是什么意思?

标签 c++ c linker

我的 csapp 书中说,如果初始化全局变量和静态变量,那么它们将包含在 ELF 可重定位目标文件的 .data 部分中。

所以我的问题是,如果某些foo.c代码包含

int a;
int main()
{
    a = 3;
}`

example.c包含,

int b = 3;
int main()
{
...
}

是否只有b被视为已初始化?换句话说,初始化是否意味着声明和定义在同一行?

最佳答案

它的意思正是它所说的。初始化的静态存储持续时间对象将在调用主函数之前设置其初始值。未初始化将被清零。该声明的第二部分实际上取决于实现,并且实现对其存档方式具有完全的自由。

当您声明不带关键字 extern 的变量时,您也始终会定义它

关于c++ - 'initialization'到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58798530/

相关文章:

c - 编译示例 CUDA 程序时出现的问题

c++ - 链接到多个项目时的全局数据的多个实例

linux - 如何引导编译器使用某个库?

c++ - 返回带有函数捕获的 lambda

c++ - 工厂模式中的模板

c - 使用 libcurl/smtp 和 gmail : login denied 发送电子邮件

java - 由于链接器错误,IntelliJ 中的 VTK/Java 包装器将无法工作(找不到依赖库)

c++ - 在 C/C++ 中使用单个初始化来初始化具有相同值的多个指针

c++ - 将 8 位值掩码为 32 位值

c - C/C++ 中的单行 #ifdef