gpt4 book ai didi

c++ - MSVC C/C++ 编译器未定义行为警告

转载 作者:行者123 更新时间:2023-12-02 03:01:04 25 4
gpt4 key购买 nike

我使用 Visual Studio 2019 编译了简单的 UB 代码,没有任何警告或错误:

int main()
{
int i = 10;
i = i++ + ++i;
return i;
}

我已打开 EnableAllWarnings(/Wall) 并将警告视为错误 (/WX) 标志。它编译成:

mov         eax,17h  
ret

因为编译器生成了这段代码,所以我确信他检测到了 UB。为什么 MSVC 不生成任何有关 UB 的警告?

我已经检查过 Clang 和 GCC 是否对此示例给出了警告。它们是否会针对任何可能的 UB 生成警告?如果是这样,为什么 MSVC 不这样做?

最佳答案

Clang and GCC gives warnings for this example. Do they generate warnings for any possible UB?

没有。许多事情被定义为“未定义的行为”而不需要诊断,正是因为它们极其难以(甚至理论上证明不可能)以 100% 的准确度进行检测。

关于c++ - MSVC C/C++ 编译器未定义行为警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969816/

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