據說兩個不同標識符的前31個字符必須不同,不管它們的總長度如何。爲什麼C中標識符(31個字符)的長度有限制?對C中標識符長度的限制
回答
此限制是爲了使內部簿記更簡單,以便編譯器可以安全地爲變量名分配不超過32個字符(31 +空終止符)(例如在不同紙張形式中存在對姓氏長度的限制) 。確切的限制是任意的,對於內存來說足夠小,對程序員來說足夠大。
另外,因爲在某些系統上,鏈接是與C編譯器系統分開的一個步驟,並且未用C編寫的目標文件可能會鏈接。這些可以限制標識符的長度。
更新:有可能讓一個程序由多個用不同語言編寫的部分組成(例如,一個函數可能已經在Fortran中編寫並從主C代碼中調用)。其他語言可能會對可變長度施加不同的限制(一個假設的例子:如果標識abcdef
和abcdef1
被認爲是指的是Fortran代碼中的相同函數,則它應該在C代碼中如此)。以姓氏爲例說明:地方當局可能能夠處理大量或當地語言的名稱,但聯邦當局的要求可能更嚴格。
謝謝您理解答案。請您詳細說明鏈接力如何限制標識符的長度。 – manasBVSS
這是編輯帖子的Malcolm McLean的補充。我已經更新了答案。 –
- 1. C標識符限制
- 2. 最大標識符長度
- 3. C++ - 限制字符串長度
- 4. 標識符的限制?
- 5. 字符長度限制$ _GET?
- 6. 限制字符串長度
- 7. 對於XML長度限制
- 8. 限制XSLT中的字符串長度
- 9. 限制FreeMarker中的字符串長度
- 10. 限制屬性的字符串長度
- 11. 數字對象標識符的最大長度?
- 12. 限制長度值
- 13. mysql長度限制
- 14. NSString長度限制
- 15. AJAX長度限制
- 16. 如何將標題的長度限制爲20個字符?
- 17. UITextField - 限制文本長度不受字符數的限制
- 18. javascript參數字符長度限制?
- 19. Ajax字符串長度限制?
- 20. PostgreSQL字符變長度限制
- 21. Java對類名長度有限制嗎?
- 22. DataTable中的字符串DataColunm:限制字符串的長度
- 23. 限制令牌的長度
- 24. 限制TTPostController.textView的長度?
- 25. 使用VBA對字符串長度有限制嗎?
- 26. vb.net中的最大標識符長度是多少?
- 27. 製作C標識符和字符串?
- 28. RSA中的消息長度限制
- 29. 例外:參數的長度超過C#中的128個字符的限制
- 30. Android限制長度到EditText的寬度
該標準僅限於[下界](http://port70.net/~nsz/c/c11/n1570.html#5.2.4.1)以供實施遵循,可能確保當前體系結構中的最低公分母。但是它也[鼓勵](http://port70.net/~nsz/c/c11/n1570.html#note18)的實現遠遠超過它們。 – StoryTeller
你最好閱讀正式的研究文件。 – roottraveller
在C99之前,要求只有6個字符。當使用不超過最低要求的鏈接器工作時,這是爲了娛樂時間 –