2013-02-16 93 views
3

爲什麼在符號表中爲本地靜態變量的名稱添加了一個數字?符號表本地靜態變量名

int main(void) { 
    static stat_var = 20; 

    return 0; 
} 

8:0000000000000008 4 OBJECT本地默認2 stat_var 0.1604

回答

5

可以存在具有相同名稱的許多局部靜態變量(在不同的函數)。編譯器給他們明確的後綴以避免潛在的名稱衝突。

+0

作爲跟進,你會知道這個數字是如何產生的? – Akeel 2013-02-16 18:33:12

+0

@Akeel它是編譯器特定的。我的猜測是,它們是由詞法分析器生成的每個範圍。從符號看,它是你正在看的gcc實現,所以源應該是可用的。 – Plynx 2013-02-16 22:35:23