You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用clang++12/13、g++10.3.0编译是否还需指定-std=c++11参数?

问题解答

1. 关于你提到的编译器默认标准的说明

你使用的三款编译器的默认C标准**都高于C11**,因此原生支持所有C++11特性,无需额外指定-std=c++11参数即可编译相关代码:

  • g++ 5.x及以上版本默认就已经支持C11,你使用的g 10.3.0默认采用带GNU扩展的C++14(gnu++14)作为编译标准
  • clang++ 12、13的默认编译标准和同版本g对齐,同样为带GNU扩展的C14(gnu++14)

2. 查询编译器默认C++标准的方法

方法1:通过__cplusplus宏验证

你可以通过编译器预定义的__cplusplus宏快速确认实际使用的C++标准:

  1. 新建cpp文件check_std.cpp,写入如下代码:
#include <iostream>
int main() {
    std::cout << __cplusplus << std::endl;
    return 0;
}
  1. 不加任何-std参数直接编译运行,输出数值对应的标准如下:
  • 199711L:C98/C03
  • 201103L:C++11
  • 201402L:C++14
  • 201703L:C++17
  • 202002L:C++20

方法2:通过编译器命令直接查询默认配置

  • 对于g++,执行命令:g++ -v --help 2>/dev/null | grep -A 10 "C++ dialect options",即可在输出中找到默认的-std配置
  • 对于clang++,执行命令:clang++ -v --help 2>/dev/null | grep -A 10 "C++ language options",即可查看默认标准配置

内容的提问来源于stack exchange,提问作者Namal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:30:04