如何查看编译器默认C++语言标准并修改默认版本?
关于Apple Clang 14.0.0的默认C标准及永久设置C20为默认的方法
一、当前编译器默认的C++标准
你使用的Apple clang 14.0.0(对应上游Clang 14版本),编译C代码时默认采用的是gnu++17标准——也就是兼容GNU扩展的C17标准。如果想自行验证,可通过以下步骤:
- 新建
test.cpp文件,写入代码:
#include <iostream> int main() { #if __cplusplus == 201703L std::cout << "C++17" << std::endl; #elif __cplusplus == 202002L std::cout << "C++20" << std::endl; #else std::cout << "Older standard" << std::endl; #endif return 0; }
- 执行
g++ test.cpp && ./a.out,输出结果为C++17,即可确认默认标准。
二、将默认标准设为C++20的方法
不用每次手动添加-std=c++20参数,有两种实用方式:
1. 给g++设置别名(推荐)
macOS默认使用zsh,若你用bash则对应修改bash配置文件:
- 打开终端,执行
nano ~/.zshrc(或用你习惯的编辑器) - 在文件末尾添加一行:
alias g++='g++ -std=c++20'
- 保存退出后,执行
source ~/.zshrc使设置立即生效。之后执行g++ main.cpp时,会自动带上-std=c++20参数。
2. 设置全局环境变量
若希望所有基于GCC/Clang的编译工具都默认用C++20,可设置环境变量:
- 编辑
~/.zshrc(或~/.bashrc),添加:
export CXXFLAGS="-std=c++20"
- 执行
source ~/.zshrc生效。注意:这种方式会影响所有读取CXXFLAGS的编译场景(比如Makefile),仅需单独修改g++行为的话,优先用别名方法。
内容的提问来源于stack exchange,提问作者Macto24
相关产品推荐
相关产品推荐

