我在當前的一個項目中使用第三方C++庫。雖然它們的lib沒有定義自定義名稱空間。所以,他們的所有功能都在那裏。這不是什麼大問題,但理想情況下他們會使用命名空間。在自定義命名空間下包含一個頭部?
是否有可能將#include
的頭文件置於某種類型的自定義僞名稱空間下?這樣,它們的所有功能都可以包含在名稱空間中。
我在當前的一個項目中使用第三方C++庫。雖然它們的lib沒有定義自定義名稱空間。所以,他們的所有功能都在那裏。這不是什麼大問題,但理想情況下他們會使用命名空間。在自定義命名空間下包含一個頭部?
是否有可能將#include
的頭文件置於某種類型的自定義僞名稱空間下?這樣,它們的所有功能都可以包含在名稱空間中。
只要這會改變函數的名稱(對於C++),就不能這樣做。 鏈接器會將名稱空間的名稱附加到該函數,因此由於缺少該函數而導致鏈接失敗。
對於instace以下代碼
namespace MyName
{
class MyNestedOne
{
public:
void doNothing();
};
};
功能doNothing將有下列名稱doNothing @ MyNestedOne @ MYNAME @@
正如你所說的,如果他們在一個命名空間可能會更好。然而這並不是什麼問題。
或者,如果您可以使用.dll而不是.lib,則可以動態綁定它,使用它並放開它。這樣你就不會有整個運行時間的浮動函數。
是否有單獨的實現文件,或者是庫頭? – 2012-04-28 16:11:18
實現也在那裏,但如果它意味着編輯他們的代碼,我想我寧願直接使用它,沒有名稱空間。 – Ryan 2012-04-28 16:13:25
因爲'#include'實際上是複製粘貼的,所以你可以做'namespace something {#include「header」}',但是如果還有其他文件包含'#include「頭文件」'和don'不要把'namespace {}放在它的周圍(如實現文件)。所以真的沒有辦法手動編輯所有的文件。 – 2012-04-28 16:14:32