以下编译,链接和运行就好了(在Xcode 5.1/clang上):
#include <iostream>
class C { int foo(); };
int main(int argc, const char * argv[])
{
C c;
cout << "Hello world!";
}
Run Code Online (Sandbox Code Playgroud)
但是,C::foo()在任何地方都没有定义,只是声明了.我没有得到任何编译器或链接器警告/错误,显然是因为C::foo()从未在任何地方引用过.
有没有什么方法可以发出一个警告:在整个程序中,即使声明了C :: foo()也没有定义?错误实际上会更好.
谢谢!
下面简单的代码。
class Base{
public:
int fcn();
};
int main() {
Base b; // clause 1
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样编译?第 1 条创建了一个实例,但从未定义Base该函数。fcn()