2014-04-02 86 views
4

短:有沒有辦法來棄用GCC或鐺命名空間?有沒有辦法來棄用一個命名空間?

長:

多年來,我們一直在積累在一個包羅萬象的命名空間的所有類的東西。現在我們已經決定給它下一些命令,並將命名空間分割成正確命名的命名空間;所以:

namespace util 
{ 
uint32_t codecID(const char * name) ; 

void alignStrings(std::vector<std::string> * strings) ; 
} 

應該成爲

namespace codec 
{ 

uint32_t codecID(const char * name) ; 

} 

namespace fmt 
{ 

void alignStrings(std::vector<std::string> * strings) ; 

} 

只是爲了助興,舊的命名空間跨越幾個定義包括文件。並且裏面的所有內容都是內聯/模板代碼;所以沒有與之關聯的庫。

明顯的解決辦法是由項目的所有定義從舊的命名空間中複製到新的和過時標記一切都變成舊的命名空間,項目。

我們不能只重命名的命名空間沒有打破幾個項目。

現在我不知道是否有做這樣的事情,如打標UTIL爲廢棄使用命名空間的一個更好的方式。

我們使用gcc 4.7.3作爲我們生產的編譯器,但建立和對鐺測試,試圖趕上GCC細節;所以在這些編譯器上工作的東西會有所幫助。

回答

2

如果您在新的頭文件中定義了新的名稱空間,那麼您可以完全棄用舊的冗餘頭文件,而不是逐項地使用#warning指令。 libstdC++ does that。 Clang也支持該指令,但MSVC例如does not

+0

好主意;它將與一些標題一起工作。但是,其他人有很好的描述性名稱,我們希望保留。 –

+0

是啊,的libstdC++使用,對TR1/...與編譯時頭'STD = C++ 11',所以他們不會失去任何漂亮的頭文件名。 – user2079303

相關問題