c 中的全局静态/非静态变量是如何被破坏的?

cpu*_*uer 2 c name-mangling

我可以想象var一个函数内的静态变量func被命名为var@func

全局静态和非静态变量呢?

Joh*_*eek 5

编译器不需要使用内部链接来唯一命名事物,例如静态变量和函数。您无法访问翻译单元之外的静态对象,因此链接器不需要为它们获取名称。

具有外部链接的全局变量通常不会对其名称进行太多修改或修饰,并且通常与应用于函数的完全相同。单个前导下划线并不少见。

  • @cpuer:只有调试符号表。它们没有存储在用于解析符号的符号表中,也没有被破坏,因为它们没有任何名称。 (3认同)