c++學習-匿名名字空間用法

用法

下午在學習levedb源碼的時候,看到version_set.cc有這樣一段代碼:

// Callback from TableCache::Get()
namespace {
enum SaverState {
  kNotFound,
  kFound,
  kDeleted,
  kCorrupt,
};
struct Saver {
  SaverState state;
  const Comparator* ucmp;
  Slice user_key;
  std::string* value;
};
}

定義了兩個結構,這很容易。原因在於,爲什麼要用一個匿名的名字空間。

使用原因

對於上面的代碼,使用匿名名字空間的作用在於,可以限定上文定義的兩個結構只在本原文件內的作用域當中使用。相當於起到了static的作用。因爲默認的全局變量都是extern的,在c中,如果想限定全局變量或者函數的作用域,可以使用static關鍵字。在c++當中,推薦使用匿名的名字空間來限定全局變量和函數的作用域。

發佈了356 篇原創文章 · 獲贊 43 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章