You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Visual Studio Community 2017中launch.vs.json参数含空格的调试问题

解决Visual Studio 2017 CMake项目中launch.vs.json带空格启动参数的问题

我之前在VS2017的CMake项目里也踩过一模一样的坑!明明想传两个带空格的参数,结果程序硬生生拆成了四个,折腾好一阵才搞明白问题出在哪。

核心问题是**launch.vs.json里的args数组需要把每个带空格的参数单独作为一个字符串元素**,而不是把空格分隔的内容拆成多个元素,也不是把所有参数塞进一个字符串里。

正确的配置示例

直接看正确写法,你可以照着修改你的launch.vs.json

{
  "version": "0.2.1",
  "defaults": {},
  "configurations": [
    {
      "type": "default",
      "project": "CMakeLists.txt",
      "projectTarget": "你的目标可执行文件.exe",
      "name": "Debug 启动配置",
      "args": [
        "FIRST ARGUMENT",
        "SECOND ARGUMENT"
      ]
    }
  ]
}

这里的关键是:

  • 每个带空格的参数是args数组的独立元素
  • 元素本身是一个完整的字符串(JSON的双引号会确保这个字符串被作为单个参数传递给程序)

常见错误写法(避坑)

你之前遇到的问题大概率是用了下面这些错误写法:

  1. 把带空格的参数拆成多个数组元素
"args": ["FIRST", "ARGUMENT", "SECOND", "ARGUMENT"]

这种写法会让程序把每个单词都当成独立参数,自然就收到4个参数了。

  1. 把所有参数塞进一个数组元素
"args": ["FIRST ARGUMENT SECOND ARGUMENT"]

这种情况程序只会收到1个参数,内容是两个短语连在一起,也不符合你的需求。

额外提示:参数包含双引号的情况

如果你的参数里本身需要包含双引号,记得在JSON里用反斜杠转义,比如:

"args": [
    "He said \"Hello World\"",
    "Another argument"
]

这样配置后,重启一下VS的调试会话,你的程序应该就能正确接收到两个带空格的参数了!

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

火山引擎 最新活动