【发布时间】:2014-12-02 20:16:57
【问题描述】:
我面临的问题是在两个 .c 文件中定义了具有相同签名的函数,并且没有给出编译时错误。我已在 .h 文件中包含声明,该文件包含在两个 .c 文件中。
例如:
int add(int x, int y) { return x+y;}
在两个 .c 文件(比如 A.c 和 B.c)中给出了相同的定义,并在一个包含在 A.c 和 B.c 中的 .h 文件中进行了声明。但是为什么这没有给出编译时错误或者我怎样才能给他们编译错误
即使链接器也没有给出任何错误,它看起来是第一个定义
我正在使用 GCC 编译器 mingw
我在其中发现了另一种模式。 如果我在头文件中使用它
#ifndef H_H_
#define H_H_
链接器未发出警告警告,但如果我不使用此链接器,则会发出预期的警告。
【问题讨论】:
-
如果有的话,你会得到一个链接器错误。你能举一个简短的例子来说明你正在做什么以及你是如何编译它的吗?
-
无法重现:gist.github.com/sharth/054c243a5f621726fa8b 能否提供更多关于您使用的环境的信息?您的代码与我在该要点中发布的代码有何不同?
-
即使链接器也没有给出任何错误,它看起来是第一个定义