共用方式為


namespace 宣告

namespace 宣告會識別並指派唯一的名稱給使用者宣告的命名空間。

namespace identifier

備註

這類命名空間在大型程式和程式庫中可用來解決名稱衝突的問題。 程式設計人員可以使用命名空間來開發新軟體元件和程式庫,而不會造成與現有元件的命名衝突。

例如:

// namespace_declaration1.cpp
namespace X
{
   int i;
   double j;
}
int main()
{
   X::i++;
}

命名空間定義的語法為:

namespace identifier
{
   [ declaration-list ]
}

namespace-definition 可以在另一個 namespace-definition 中以巢狀方式放置。 每個 namespace-definition 必須出現在檔案範圍,或立即出現在其他 namespace-definition 中。

例如:

// namespace_declaration2.cpp
// C2870 expected
namespace A
{
   int j = 3;
   int f(int k);
}

namespace Outer
{
   int n = 6;
   int func(int num);

   namespace Inner
   {
      float f = 9.993;
   }
}

int main()
{
   namespace local   // C2870: not at global scope
   {
   }
}

不同於其他宣告區域,命名空間的定義可以在單一轉譯單位中分割為幾個部分。

// namespace_declaration3.cpp
namespace A
{
   // declare namespace A variables
   int i;
   int j;
}

namespace B
{
}

namespace A
{
   // declare namespace A functions
   void func(void);
   int int_func(int i);
}

int main()
{
}

以這種方式在其初始定義後繼續使用命名空間時,接下來會呼叫「擴充命名空間定義」。該命名空間的原始定義稱為基本「原始命名空間定義」。

使用這個標記法對於較長的名稱或大型程式可能會相當麻煩。 使用宣告使用指示詞命名空間別名提供更直接的方式參考命名空間的成員。

namespace 宣告 (其中包含新的命名空間、未命名的命名空間或擴充的命名空間定義) 必須使用大括號括住命名空間主體。 陳述式

namespace X;

為錯誤的語法。 陳述式

namespace X{};

語法沒有錯誤,但沒有意義。

如需背景資訊,請參閱命名空間

原始命名空間定義中的識別項在使用它的宣告區域中必須是唯一的。 識別項是命名空間的名稱,用來參考它的成員。

命名空間定義的宣告區域即是它的主體。 主題必須使用大括號 ({}) 括住,其中可能包含變數、函式、物件、範本及巢狀命名空間的宣告或定義。 declaration-list 中的宣告會是命名空間的成員。 每個命名空間成員的名稱會自動限定其命名空間的名稱,以及範圍解析運算子

請參閱

參考

命名空間 (C++)

C++ 關鍵字

未命名的命名空間