我想知道是否有任何编译器标志可以设置来接收这种情况。说我有以下文件:
A.H
class a
{
public:
int lala(void);
int lala2(void);
};
a.cpp
#include "a.h"
int a::lala(void)
{
return 5;
}
的main.cpp
#include <iostream>
#include "a.h"
int main()
{
a thi;
std::cout << thi.lala() << std::endl;
return 0;
}
这里的问题是lala2的功能没有实现,虽然它没有被使用,甚至没有发出警告。
所以我不知道它是如何导致这一点的,但基本上在很大一部分代码中都有一个未实现的功能。我只是想知道是否有任何编译器标志可以让我们选择它?使用g++ -pedantic -Wall
还不够。
答案 0 :(得分:0)
编译器无法做到这一点。编译器逐个编译源文件。您可以在一个源文件中实现lala,在另一个源文件中实现lala2。编译器无法知道其他地方是否存在lala2实现。
如果您尝试使用lala2,链接器将显示错误。如果不这样做,代码就可以正常工作。