为cl.exe(Visual Studio代码)指定命令行C++版本
Specify command-line C++ version for cl.exe (Visual Studio Code)
我正在测试Visual Studio代码中的C++17故障转移属性。IDE已配置为使用Microsoft Visual Studio cl.exe编译器编译C/C++代码。我在调试模式下构建一个简单的.cpp
文件的任务定义(在tasks.json
中(是:
{
"type": "shell",
"label": "cl.exe: Build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${file}",
"/link",
"/OUT:${fileDirname}\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$msCompile"
]
}
这已经在几个程序上进行了测试,效果良好。现在,我使用新的[[fallthrough]];
属性包含一个switch
语句,编译器生成:
warning C5051: attribute 'fallthrough' requires at least '/std:c++17'; ignored
将CCD_ 5添加到";args";对于cl.exe,没有任何更改(生成相同的编译器警告(。这是新版本:
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"/std:c++17",
"${file}",
"/link",
"/OUT:${fileDirname}\${fileBasenameNoExtension}.exe"
],
据我所见,根据指定语言标准的Microsoft文档,我的语法是正确的。
我做错了什么?
我在搜索其他内容时发现了这个问题,但这里有一个修复方法:(。
你的问题在于你提供论据的顺序。/Fe:
期望文件路径直接位于-之后https://learn.microsoft.com/en-us/cpp/build/reference/fe-name-exe-file?view=msvc-160
这里有一个来自VSCode文档的示例args
部分,但我添加了/std:c++17
编译器标志
"args": [
"/Zi",
"/EHsc",
"/std:c++17", // <= put your compiler flag here
"/Fe:", // <= /Fe: followed by the path + filename
"${fileDirname}\${fileBasenameNoExtension}.exe",
"${file}"
]
希望这有帮助,快乐编码!
相关文章:
- 从命令行c++发送文本文件名
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 数组长度,为什么从命令行获取时不能使用它?
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 通过 Openssl 命令行加密,通过 c++ 解密
- CMake "--target install"无需"--build"命令行
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 C++ 将命令行参数拆分为参数/向量
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 如何在OMNET++中添加专门的命令行参数?
- Makefile g++ 使用命令行中的 -D 变量进行编译,默认值
- 在命令行中创建快捷命令
- 在命令行上将输入显示到数组中时如何删除 ./a.out?
- C++命令行提示符不应重复
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 通过命令行在Visual Studio中编译单个独立文件