为什么gcc不给我警告或错误?

时间:2014-10-14 21:16:37

标签: c++ gcc

我创建了共享库:

lib.h:

int fun( int a, int b);

lib.cpp:

#include <lib.h>

int fun ( int a, int b)
{
    return a+b;
}

编译:

gcc -fPIC -c lib.cpp gcc -shared -o -I ./header lib.so lib.o

我的lib.h位于./header中。 因此,汇编已经成功。之后我改变了lib.cpp:

#include <lib.h>

int fun ( int a)
{
    return a;
}

但什么也没发生。我想看到错误消息或警告。为什么?

1 个答案:

答案 0 :(得分:7)

在C ++中,定义具有相同名称但参数不同的第二个函数是合法的。在C中,编译库时会出错,但在C ++中则不会。

现在使用任何一种语言,使用您的库的任何人都会收到未定义的符号错误。标题中列出的函数未在任何地方定义。