gpt4 book ai didi

c++ - 如何让编译器警告这是一个无效的 boolean 值?

转载 作者:搜寻专家 更新时间:2023-10-31 00:06:22 27 4
gpt4 key购买 nike

我们刚被一个拼写错误搞砸了:“constexpr bool maxDistance=10000;

gcc 和 clang 都在没有警告的情况下编译它。

这里真正的错误是变量不应该是 bool 类型,而应该是整数类型。

我们如何确保将来收到编译器警告?

#include <iostream>

constexpr bool number = 1234;
int main(int argc, char* argv[])
{
std::cout << number + 10000 << std::endl; // prints 10001.
return number;
}

这里的错误是变量声明的类型错误,但是clang和gcc都没有给出警告。

gcc -Wall -std=c++14 test.cpp -lstdc++
clang -Wall -std=c++14 test.cpp -lstdc++

(使用 gcc 5.4.0 和 clang 3.8.0)

注意:我已经了解了一个可能的编译标志:-Wint-in-bool-context 但是这似乎并没有在我使用的版本中实现(5.4. 0) 也不在 clang (3.8.0) 中。

这是正确的方法吗?

最佳答案

你应该使用直接列表初始化语法,它禁止缩小:

constexpr bool number{1234}; // error: narrowing conversion of '1234' from 'int' to 'bool' [-Wnarrowing]

关于c++ - 如何让编译器警告这是一个无效的 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58144656/

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