问题描述
int main ()
{
static uint8_t var_1[10] = {1};
static uitn8_t var_2[10] = {0};
return 1;
}
如果我使用readelf -a foo | grep var_2
,则会看到以下内容:
38: 0000601058 10 OBJECT LOCAL DEFAULT 26 var_2.2482
我想知道.2482是什么,它是变量的某种排序索引。我也在用gcc。谢谢
解决方法
编译器,链接器,目标文件,调试器等使用一种广泛称为"name mangling"的概念来确保程序中使用的标识符是唯一的,并在内部对其进行区分-因为编程语言可能允许使用相同的名称在几个地方的标识符。 “名称处理”并不是真正的标准化,但是每种工具都倾向于使用自己的名称处理方案。