2011-03-20 18 views
6

一般來說,我在Linux上觀察到使用nm的是T符號名稱(我感興趣的是)即使在我不使用extern "C"時也會在不同的計算機上保持一致。我的觀察是否正確?在不同的計算機上編譯時,C++ mangled名稱是否保持一致?

注意我在所有計算機上都使用gcc。

+1

什麼是*'T'符號名稱*? – 2011-03-20 17:37:49

+0

@ Space_C0wb0y:[「T」符號在文本(代碼)部分。](http://unixhelp.ed.ac.uk/CGI/man-cgi?nm) – 2011-03-20 17:39:58

+0

@ Space_C0wb0y:檢查'man nm' – MrD 2011-03-20 17:43:50

回答

9

對於計算機,一天中的時間或天氣影響名稱修改將是非常不尋常的。

更可能導致偏差的是編譯器版本的差異。

但是許多linux平臺爲C++定義了一個ABI(應用程序二進制接口),其中包括名稱修改規則。在這些平臺上,不管優化級別,編譯器版本,主機名稱,硬盤序列號,一天中的時間,天氣,上週您最喜愛的運動隊是否輸掉了,或者沒有任何因素,相同的源代碼都會編譯爲相同的損壞名稱在ABI中明確提到。

+0

謝謝!這解釋了它 – MrD 2011-03-20 17:47:06

相關問題