gpt4 book ai didi

c - C 中的全局静态变量和局部静态变量如何不会发生冲突

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:26 27 4
gpt4 key购买 nike

我在程序中定义了一个全局静态变量“x”,在同一程序的一个函数中定义了局部静态变量“x”。两者都应该驻留在数据段中。那么为什么编译器没有给出错误或名称是如何解析的。

最佳答案

why the compiler is not giving error

因为这两个变量具有不同的作用域,这意味着从编译器的角度来看它们是两个不同的变量。

how the names are resolved

编译器可能会给它们不同的名字。

例如

static int x;

void foo(void) {
static int x;
}

这是 x 的符号:

$ readelf -s t108.o | grep x
Num: Value Size Type Bind Vis Ndx Name
5: 0000000000000000 4 OBJECT LOCAL DEFAULT 3 x
6: 0000000000000004 4 OBJECT LOCAL DEFAULT 3 x.1707

关于c - C 中的全局静态变量和局部静态变量如何不会发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22341294/

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