ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

無名ネームスペース

名前を付けないでネームスペースを指定するとそれは無名ネームスペースとなり、そのファイルの中でのみ有効となる。
次のように二つのファイルをコンパイルしてリンクする場合。list1.cppで宣言された無名ネームスペースのiはlist2.cppでexternで参照しようとしているがリンク時にエラーとなる。staticと同じような感じだろう。
list1.cpp

namespace {
    int i;
}

void  func1() {
    cout << i;
}

list2.cpp

extern int i;

void func2() {
    cout << i; // エラー。リンクに失敗する。
}