2011-12-24 17 views
2

我正在編寫一個庫以在我的項目中使用。其中,我希望將c標準庫包裝在庫的命名空間和cstd命名空間中,以避免在全局命名空間中具有其功能。然而,從我之前提出的問題以及從我測試的內容來看,我不能僅僅在命名空間中包含所有內容。有沒有辦法做到這一點?在命名空間中包裝外部庫

回答

3

我懷疑它,除非你想重寫所有的東西。 C語言本身沒有名稱空間的概念,因此C標準庫使用的所有內容都必須依賴於它所尋找的任何內容駐留在全局名稱空間中的事實。

如果你簡單地纏着你的#包括一個命名空間,編譯器將無法找到任何東西,因爲它不知道在看什麼名稱空間。

1

通常的做法是把第3派對包含在實施文件中以防止污染你的API。

myapi.hpp

void coolthing(int howcool); 

myapi.cpp

#include <coollib.h> 

void coolthing(int howcool) 
{ 
    coollib_coolthing(howcool); 
}