使用Mac Clang编译C++列表初始化代码报错:需在x后加分号
解决Mac Clang编译列表初始化报错的问题
问题原因
列表初始化(int x {5};这类写法)是C11引入的特性,部分旧版本的Mac自带Clang编译器,即便标称默认使用gnu++14标准,实际编译时也可能未正确启用C11及以上的特性支持,从而触发语法报错。
解决方案
1. 显式指定C++标准编译
编译时通过-std参数明确指定C++11或更高版本的标准,示例命令如下:
# 使用C++11标准编译 clang++ -std=c++11 main.cpp # 或使用更高版本如C++17 clang++ -std=c++17 main.cpp
执行上述命令后,编译器就能正确识别列表初始化语法。
2. 更新Clang版本
若显式指定标准仍报错,说明你的Clang版本过旧,可执行以下命令更新Xcode命令行工具:
xcode-select --install
按照提示完成安装后,再重新尝试编译即可。
内容的提问来源于stack exchange,提问作者Tyrcnex
相关产品推荐
相关产品推荐

