不需要执行功能,也没有给出警告

时间:2014-05-27 06:24:29

标签: c++ compiler-warnings

我想知道是否有任何编译器标志可以设置来接收这种情况。说我有以下文件:

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还不够。

1 个答案:

答案 0 :(得分:0)

编译器无法做到这一点。编译器逐个编译源文件。您可以在一个源文件中实现lala,在另一个源文件中实现lala2。编译器无法知道其他地方是否存在lala2实现。

如果您尝试使用lala2,链接器将显示错误。如果不这样做,代码就可以正常工作。