我注意到在 C++ 中 bool 被隐式转换为 char。我意识到它们都存储为 1 个字节,但它们是根本不同的类型。是否有一些编译器标志或我可以设置的东西来防止两者之间的隐式转换? char
自动转换为 bool
是有意义的,但反之则不然。
例如,以下内容是有效的:
char test = true;
我正在使用带有 C++17 的 Xcode
最佳答案
此转换是 C++ 标准( integral conversions 的一部分)强制执行的,因此不可能禁用此转换并保持兼容的 C++ 编译器。
编译器有可能提供不合规的扩展,但对于这样的事情,他们可能更喜欢警告而不是不合规。但是,我找不到提供此类警告的编译器(例如, No warning for implicit cast of bool to floating type )。
不过,答案可能以非编译器工具的形式存在。看起来像 clang-tidy包括a check for implicit conversions from bool .
关于c++ - 防止从 bool 到 char 的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63862428/