C++ 無名の名前空間

名前空間に名前をつけない事も可能です。

名前なしの名前空間内に宣言された変数や関数は、
static属性がついたものと同様のモノとして動作します。

つまり、グローバル変数、関数にstatic属性がついただけ。
と考える事ができます。

#include <iostream>

using namespace std;

namespace {
      int a;                  // static int a;と同じ意味
      void show(void);        // static void show(void);と同じ意味
}

void main(void) {
      cout << "a=" << a << '\n';
      show();
}

静的なグローバル変数、静的なグローバル関数を使う場合に
C言語機能のstatic付き変数、関数を使うか、
この無名の名前空間機能を使うかは好みで決めていいと思います。

C++が使える環境においては、
無名の名前空間機能を使うように推奨されているようです。

タイトルとURLをコピーしました