運行時庫是否會污染全局命名空間?運行時庫和全局命名空間
1
A
回答
1
運行時庫需要使用保留標識符。如果沒有名稱空間限定,則必須以兩個下劃線開頭:__start
等。
您不能使用保留名稱。圖書館不允許使用你的名字。如果任何一方交叉到另一方,那就是非法的「污染」。
本質上,C和C++的情況是相同的,除了其他答案指出,在C++中大多數標準庫名稱具有名稱空間限定。
3
我不認爲你真的理解你正在使用的術語,但C++標準庫中的名字存在於std命名空間中,所以答案是否定的。在發起C標準庫中的頭文件中的姓名放置在全局命名空間,如果你通過.H文件名#包括它們,如:
#include <stdio.h>
如果你#包括他們是這樣的:
#include <cstdio>
然後名稱同時存在於全局名稱空間和標準名稱空間中。
將對象放置在標準名稱空間中的原因並不是爲了避免「名稱空間污染」,它幾乎不是一個價值中立的術語,而是爲了避免名稱衝突。
1
大多數圖書館的那張乾淨的命名空間std:
- 然而,爲了向下兼容與C
,您可以選擇通過包括舊頭部像<math.h>
(這使許多名在全局命名空間)「污染」的全局命名空間而不是像<cmath>
(它正確地使用std:
名稱空間)這樣的新適配。
+1
通常,大多數實現將名稱放在兩個名稱空間中,如果你#include cmath等人。 – 2010-04-24 18:11:05
相關問題
- 1. AngularJs和全局命名空間
- 2. 命名空間和全局變量
- 3. PHP中全局命名空間的運行功能塊
- 4. 全局命名空間中的命名空間C#
- 5. PHP:命名空間與全局命名空間
- 6. 導入一個共享庫和全局命名空間
- 7. jQuery命名空間全局變量
- 8. 命名空間全局函數
- 9. pspell全局命名空間字典
- 10. 全局命名空間變量?
- 11. 導入全局命名空間在Python
- 12. 命名空間:「用作」全局
- 13. 試圖從全局命名空間
- 14. 統一C#全局命名空間
- 15. 命名空間全局變量問題
- 16. 污染全局命名空間
- 17. 命名空間在運行時
- 18. 全局命名空間中的JavaScript庫函數 - 缺點?
- 19. 將C++庫放在全局命名空間之外
- 20. Python庫對全局命名空間有自然依賴嗎?
- 21. .Net 4.5和VS2012每當指定一個命名空間時都需要「全局」命名空間
- 22. 從另一個命名空間訪問C++全局命名空間
- 23. 在我的命名空間上下文中使用全局命名空間?
- 24. 命名空間內的全局空間函數
- 25. 全局名稱空間CreateFileMapping和SeCreateGlobalPrivilege
- 26. Python名稱空間和全局變量
- 27. C++:使用命名空間,全局變量是行不通的
- 28. lambda表達式,本地類型和全局命名空間
- 29. 節點JavaScript文件和全局命名空間
- 30. XML驗證錯誤,全局元素和命名空間
我指的是在此指定的運行時庫: http://en.wikipedia.org/wiki/Runtime_library 運行時庫不是標準庫,它用於實現異常處理,與其他的東西在C++中。 – aCuria 2010-04-24 18:17:57