2017-01-30 56 views
0

據說兩個不同標識符的前31個字符必須不同,不管它們的總長度如何。爲什麼C中標識符(31個字符)的長度有限制?對C中標識符長度的限制

+2

該標準僅限於[下界](http://port70.net/~nsz/c/c11/n1570.html#5.2.4.1)以供實施遵循,可能確保當前體系結構中的最低公分母。但是它也[鼓勵](http://port70.net/~nsz/c/c11/n1570.html#note18)的實現遠遠超過它們。 – StoryTeller

+0

你最好閱讀正式的研究文件。 – roottraveller

+0

在C99之前,要求只有6個字符。當使用不超過最低要求的鏈接器工作時,這是爲了娛樂時間 –

回答

0

此限制是爲了使內部簿記更簡單,以便編譯器可以安全地爲變量名分配不超過32個字符(31 +空終止符)(例如在不同紙張形式中存在對姓氏長度的限制) 。確切的限制是任意的,對於內存來說足夠小,對程序員來說足夠大。

另外,因爲在某些系統上,鏈接是與C編譯器系統分開的一個步驟,並且未用C編寫的目標文件可能會鏈接。這些可以限制標識符的長度。

更新:有可能讓一個程序由多個用不同語言編寫的部分組成(例如,一個函數可能已經在Fortran中編寫並從主C代碼中調用)。其他語言可能會對可變長度施加不同的限制(一個假設的例子:如果標識abcdefabcdef1被認爲是指的是Fortran代碼中的相同函數,則它應該在C代碼中如此)。以姓氏爲例說明:地方當局可能能夠處理大量或當地語言的名稱,但聯邦當局的要求可能更嚴格。

+0

謝謝您理解答案。請您詳細說明鏈接力如何限制標識符的長度。 – manasBVSS

+0

這是編輯帖子的Malcolm McLean的補充。我已經更新了答案。 –