我希望使用一些C++17特性,但Mac的clang目前不支持,因此我使用
brew install gcc --HEAD
安装 g++ 10.0.1 版本。直接调用终端中的代码可以正常运行。
g++-HEAD -std=c++17 test.cpp
我还在bash中创建了一个链接ln -s g++-HEAD g++
,并在.bash_profile
中添加了一个别名alias g++='g++ -std=c++17'
,以便
g++ test.cpp
我希望在Visual Studio Code-Mac版本中运行C++代码。安装了Microsoft的C/C++扩展和Code Runner扩展程序后,我设置了VSCode中的settings.json
文件以包含编译器参数:
{
"C_Cpp.default.cppStandard": "c++17",
"C_Cpp.default.compilerPath": "/usr/bin/g++",
"C_Cpp.default.intelliSenseMode": "gcc-x64",
"C_Cpp.default.compilerArgs": [
"-std=c++17"
]
}
然后我尝试运行相同的代码,但是收到了警告:
[Running] cd "/some directory/" && g++ test.cpp -o test && "/some directory/"test
warning: fold-expressions only available with '-std=c++17' or '-std=gnu++17'
很明显,这意味着在 VSCode 中运行的 g++ 编译器不是我手动设置的别名。更有趣的是,如果我直接在 VSCode TERMINAL 中运行,我的以前的代码
g++ test.cpp -o test
我对VSCode的设置感到困惑:为什么运行程序时不使用与VSCode自己终端中使用的相同的g++
编译器参数?另外,我应该如何修改settings.json
文件或其他VSCode文件,以便我可以正确添加-std=c++17
参数?