gpt4 book ai didi

c++ - clang 可以在编译时警告未定义的行为吗?

转载 作者:太空狗 更新时间:2023-10-29 19:52:23 24 4
gpt4 key购买 nike

#include <iostream>

int main()
{
int n = -1000;
for (int i(0); i != n; ++i)
{
}
}

在 gcc 中,在编译时会捕获以下错误:

main.cpp:6:5: warning: iteration 2147483647u invokes undefined behavior [-Waggressive-loop-optimizations]

for (int i(0); i != n; ++i)

Clang 的 -fsanitize=undefined 是一种运行时机制。什么是 clang 的编译时等价物?

最佳答案

未定义的行为在标准中经常被这样描述,因为编译器很难在所有情况下检查它,如果不是不可能的话。

您刚刚遇到一个由 GCC 而不是 Clang 处理的案例。如果您看一下,您将能够找到由一个编译器而不是另一个编译器处理的情况。这是因为它们不是同一个编译器,并且执行的分析也不同。

关于c++ - clang 可以在编译时警告未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26523165/

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