源文件中未命名的命名空间和局部变量

时间:2013-10-22 11:44:38

标签: c++ namespaces

我总是在源文件中使用未命名的命名空间代替静态,但我遇到了一些只在源文件中定义它的代码。

// Source file foo.cpp

const float someFloat = 3.2f;

Foo::Foo() {
  std::cout << someFloat << std::endl;
}

在未命名的命名空间上执行此操作是否有任何不利之处?

1 个答案:

答案 0 :(得分:2)

在这种情况下,其他一些.cpp文件可以使用extern const float someFloat;来提取该变量,如果该变量是静态的或在未命名的命名空间中,这是不可能的。

有人可能会说使用extern的可能性是一个缺点,因为它可能在某些情况下破坏封装。