gpt4 book ai didi

c - 在 Debug模式下获得警告但在 Release模式下没有(我会得到未定义的行为吗?)

转载 作者:太空宇宙 更新时间:2023-11-04 04:35:33 25 4
gpt4 key购买 nike

我的情况有点奇怪。我正在某些设备上编译。如果我在 Release模式下编译,例如

makeCore projectname release exe

一切都很好。如果我在 Debug模式下编译:

makeCore projectname debug exe

我收到以下警告:

src/administration.c: In function 'SetIp':
src/administration.c:1409: warning: implicit declaration of function 'InputIp'

问:这是否意味着在 Release模式下可以安全地使用我的应用程序?

为什么会出现这种行为?该怎么办?我正在使用以 Release模式编译的二进制文件,我应该担心吗?

编辑:我是否应该首先检查这个编译器符合哪个 C 标准,如果它是 C89 之前的版本,那么我不应该担心,因为它不是未定义的行为,对吗?

Edit2: 我的最终问题是我是否正在触发未定义的行为以及如何检查我是否正在触发未定义的行为?我不确定我的编译器是否实现了 C89 或 C90 等。也许我应该问供应商我上面所做的是否是未定义的行为?

更新:

这是函数签名:

s32 InputIp(s32 line, u8 * text, s32 otherline, u8 *IP, u8 coordx, s32 coordy);

它是这样叫的:

s32 res = InputIp(someconstant, u8pointer, otherconstant, otheru8pointer, integer1, integer2);

最后一个问题:既然我一开始就收到这个警告,我能确定我正在使用使用 C89 的编译器吗?否则会报错?我说得对吗?

最佳答案

有几个可能的原因会导致您有所不同。

  1. 降低发布版本中的编译器警告级别。

这是最有可能的原因。

  1. 条件代码。

可能是这样的原因:

`#ifndef DEBUG`

`#include "ip.h"`

`#endif`

请注意,implicit declaration 是一个您应该认真对待的警告,因为它可以隐藏错误。我建议您在需要的地方添加前向声明。

关于c - 在 Debug模式下获得警告但在 Release模式下没有(我会得到未定义的行为吗?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891029/

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