-1
我试着这样做:使用匿名。匿名的名称空间函数。命名空间范围
file.h
namespace {
void fun();
const bool nevermind = Register(fun);
}
file.cpp
namespace {
void fun() {
do_some_job();
}
}
有链接错误。函数void fun()不是由链接器找到的。
如果我试着这样做:
file.h
namespace {
void fun() {
do_some_job();
}
const bool nevermind = Register(fun);
}
一切都OK。
如何编译第一种情况?我不想在* .h文件中定义函数。
不完全。同一翻译单元中的两个未命名的名称空间或多或少具有相同的名称,这与其他翻译单元是唯一的。所以你可以在'.cpp'文件顶部的一个未命名的命名空间中声明一个声明,并且在另一个声明的底部定义一个声明,它们将会匹配,但不会跨越两个文件。 – BoBTFish
@BoBTFish:好的,这很有道理。感谢您纠正我! – villintehaspam