2

测试.cpp

#include "test.hpp"

void f1() { }

namespace {
   void f2() {}
}

namespace test {
   void f3() { }
}

如果我错了,请纠正我,但是:

  • f1如果在头文件中声明或使用extern语句,则可以从外部调用
  • f2不能从外面调用
  • f3test::如果它在头文件中声明(并适当地加上前缀 - ),则可以从外部调用。如果没有在header中声明,就不能调用?

我对吗?

4

1 回答 1

3

您的问题标题具有误导性。永远不要在标题中放置匿名名称空间。

f2不能从 test.cpp 外部调用,正确。

f1并且f3可以在适当的声明可用时调用。这些可以在标头中,但没有什么能阻止其他 .cpp 文件简单地拥有标头中的代码,即使您不提供。

此外,extern函数声明也不需要。

void f1();
namespace test {
  void f3();
}
于 2013-08-29T16:07:43.840 回答