在Code::Blocks 16.01中同时启用C99与C++11的问题咨询
问题解答
是不是Code::Blocks 16.01特有问题?
是的,这个界面选项互斥的问题是16.01版本的老bug。后续更新的版本(比如17.12及之后)重构了编译器配置界面,会单独区分C、C++项目的标准设置,不会出现这种勾选冲突的情况。
16.01版本的临时解决办法
因为gcc和g++本质是独立的二进制程序,只是旧版Code::Blocks的UI没做区分,直接手动添加编译选项就能绕开限制:
- 针对单个项目:
- 右键项目 →
Build options - 切换到
Compiler settings标签页 →Other options - 如果是C项目,添加一行:
-std=c++11(需要更高标准可换成-std=c++14/-std=c++17),这样就能正常使用nullptr这类C11特性 - 如果是C项目,添加一行:
-std=c99,代替界面上的勾选,就能启用C99标准
- 右键项目 →
- 全局配置(所有新项目生效):
- 顶部菜单栏
Settings→Compiler - 在
Global compiler settings里,分别切换到GCC Compiler(对应C语言)和G++ Compiler(对应C++)的标签页 - 同样在
Other options里添加对应标准的命令行参数即可
- 顶部菜单栏
补充说明
旧版界面把gcc和g++的标准选项混在一起,导致勾选冲突,但实际上手动添加-std参数是直接传递给对应编译器的,完全不会有冲突,这也是最直接的解决方式。
内容的提问来源于stack exchange,提问作者markoj
相关产品推荐
相关产品推荐

