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

问题描述 投票:0回答:1

我使用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?

c++ visual-studio compiler-warnings undefined-behavior
1个回答
0
投票

Clang和GCC在此示例中给出警告。它们是否为任何可能的UB生成警告?

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

© www.soinside.com 2019 - 2024. All rights reserved.