無名名前空間に限らず、namespaceを使用すると内部リンケージになると考えて良いのでしょうか。
無名名前空間を使用すると内部リンケージになります。
そのため以下のコードは二重定義のリンクエラーになりません。
Windows7 64bit
Visual Studio Community 2015
C++
1// main.cpp 2int var; 3 4int main() { 5}
C++
1// sub.cpp 2namespace { 3 int var; 4} 5
しかし、以下のコードの様に、名前空間名を付けてnamespaceを使用してもリンクエラーになりませんでした。
C++
1// main.cpp 2int var; 3 4int main() { 5}
C++
1// sub.cpp 2namespace ns { 3 int var; 4}
無名名前空間に限らず、namespaceを使用すると内部リンケージになると考えて良いのでしょうか。
これは規格上の正しい動きであるのか、それとも未定義の動作なのでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/27 11:21
2016/01/27 11:35