首页 > 解决方案 > 通过编译器在 C++ 中设置 Bool 的默认值

问题描述

我正在尝试对开源 C++ 项目进行一些更改。我知道C++中BOOL的值在声明的时候应该初始化,否则会出人意料。但是几乎所有原始代码中的布尔变量都是这样声明的未初始化

bool oracle_pro_decl;
bool _oracle_external_procedure;
bool _oracle_language_procedure;

我使用 GNU C++ 作为编译器,有没有办法将 bool 的所有默认值设置为 false?

标签: c++boolean

解决方案


我使用 GNU C++ 作为编译器,有没有办法将 bool 的所有默认值设置为 false?

如果你这样做,你正在改变 C++ 的语义。阅读 C++11 标准n3337并查看此 C++ 参考网站。

但是,您可以这样编写GCC 插件(隐式将每个bool 自动变量初始化为 false)。您的插件将在GIMPLE级别上工作。

我的观点是编写这样的 GCC 插件是个坏主意。

我的建议是启用更多警告和调试信息,即编译然后使用GDB 调试器(也许还有valgrind)。一旦你的程序几乎没有错误,你可能会要求 GCC 进行更多优化(例如使用)g++ -Wall -Wextra -g-O2

您还可以考虑使用Clang 静态分析器


推荐阅读