小编Moh*_*ani的帖子

是否可以在单个C文件中声明具有相同名称的多个静态变量?

是否可以在具有不同范围的单个C文件中声明多个具有相同名称的静态变量?我写了一个简单的程序来检查这个,并在gcc中编译并运行良好.

码:

static int sVar = 44;

void myPrint2()
{
    printf("sVar = %d\n", sVar++);
}

void myPrint()
{
    static int sVar =88;
    printf("sVar = %d\n", sVar++);
}

int main(void)
{
    static int sVar = 55;
    int i = 0;
    for (i = 0; i < 5; i++)
        myPrint();      
    printf("sVar = %d\n", sVar);
    myPrint2();
    return(0);
}
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,因为所有"静态"变量将驻留在同一部分(.data)中,那么我们如何在一个部分中拥有多个具有相同名称的变量?

我曾经objdump检查过不同的部分,发现所有静态变量(sVar)都在.data部分,但名称不同:

0804960c l     O .data  00000004              sVar
08049610 l     O .data  00000004              sVar.1785
08049614 l     O .data  00000004              sVar.1792
Run Code Online (Sandbox Code Playgroud)

为什么编译器正在更改变量的名称(因为C不支持名称修改)?

c static

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

c ×1

static ×1