gpt4 book ai didi

未为多个定义生成编译器警告

转载 作者:太空宇宙 更新时间:2023-11-04 07:12:30 24 4
gpt4 key购买 nike

我面临的问题是在两个 .c 文件中定义了具有相同签名的函数,并且没有给出编译时错误。我在 .h 文件中包含了声明,它包含在两个 .c 文件中。

例如:

int add(int x, int y) { return x+y;}

相同的定义在两个 .c 文件(比如 A.c 和 B.c)中给出,并在一个 .h 文件中给出声明,该文件包含在 A.c 和 B.c 中。但是为什么这没有给出编译时错误或者我怎样才能给它们编译错误

即使链接器也没有给出任何错误,看起来它正在接受第一个定义

我正在使用 GCC 编译器 mingw

我发现了另一个规律。如果我在头文件中使用它

#ifndef H_H_
#define H_H_

链接器没有发出警告警告,但如果我不使用此链接器会发出警告,这是预期的。

最佳答案

这种情况是未定义的行为,不需要诊断。

请查阅链接器的文档,看看它是否有任何选项来报告函数的多个定义。

关于未为多个定义生成编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27258136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com