如何确保在定义之前声明 C++ 函数(如 override 关键字)?

pat*_*lea 0 c++ shared-libraries

在我的共享库中,我在头文件中声明了一个函数,并在 .cpp 源文件中定义了它。将应用程序与库链接时,链接器抱怨函数未定义,我不知道是因为缺少命名空间、不同的参数还是其他原因。

如果我可以将函数定义标记为“实现先前的声明”,我将在编译期间捕获此声明/定义差异,而不是稍后将应用程序与库链接时。

是否有类似于类方法的“覆盖”关键字的东西会阻止我在没有现有匹配声明的情况下定义函数?

我可以使用,-Wl,--no-undefined但有些库是在预期--no-undefined不会被使用的情况下创建的。

Max*_*kin 6

在命名空间的头文件中声明一个函数,例如:

namespace N { void f(); }
Run Code Online (Sandbox Code Playgroud)

.cc使用限定的函数名称在文件中定义函数

void N::f() { /*...*/ }
Run Code Online (Sandbox Code Playgroud)

这样,如果f在命名空间N中没有与定义匹配的声明,则会发出编译器错误。