2017-06-03 25 views
5

我想在同一個.cpp文件中包含多個命名空間。在同一個C++源文件中使用多個命名空間是否是一個好習慣?

雖然std被廣泛使用,但命名空間z3將用於25 KLOC文件的約10%。

會不會是同時使用的

using namespace std; 
    using namespace z3; 

我想只用std,然後通過在需要時提namespase使用Z3方法一個很好的做法。像,

using namespace std; 

    z3::context c; 
    z3::solver s; 

哪個更好?

我不想將它們重命名爲一個名稱空間。

感謝和問候, 薩卡尼亞

+0

如果你寫的'使用命名空間r3'所以爲什麼要創造呢? –

+8

我首先看到你是否可以以某種方式將25K loc(!)文件分解爲更小的文件。 – Mureinik

+0

@Mureinik,是的,我應該這樣做。還沒有來到它。謝謝。 –

回答

8

它實際上不是導入整個命名空間到你的程序,因爲它污染您的命名空間的最佳實踐。這可能導致命名衝突和膨脹的程序。最好只導入你正在使用的東西。

所以不是:

using namespace z3; 

而應該做的:

using z3::context; 
+2

同上'std'的內容同上 – user4581301

+0

謝謝。這幫助我決定。再次感謝。 –

+1

不僅命名衝突。更危險的是,代碼行爲可以默默地改變,例如,如果兩個名稱空間都包含具有相同名稱但略有不同參數的函數(重載)。看[這個簡單的例子](http://coliru.stacked-crooked.com/a/578f9934725ffd90)。 – zett42

相關問題