克++输出与领先的空间的文件名?

问题描述 投票:0回答:1

我在VS代码通过G建设我的第一个C ++程序++,但是当我指定与-o filename.exe标志输出可执行文件的文件名,输出文件始终有一个前导空格(“文件名.exe”,而不仅仅是“文件名.exe “)。

我刚开始使用C ++和(因为它似乎是一个非常流行的“IDE”用于C ++的东西,但选择它)我从来没有使用VS代码之前,所以忍耐一下,如果这是愚蠢的。我与build-essential(12.4ubuntu1)和VS代码(1.30.2)的最新版本上运行所有这一切在Kubuntu的18.04。

基于谷歌福(和一些试验/错误)的一点点,我把这个一起生成任务tasks.json

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build hello world",
            "type": "shell",
            "command": "g++",
            "args": [
                "${workspaceRoot}/helloworld.cpp", "-o helloworld.exe"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }

        }
    ]
}

当我运行它来构建我的helloworld.cpp文件(这正是你所期望的),其输出称为' helloworld.exe'一个可执行文件,而不是helloworld.exe

visual-studio-code g++
1个回答
1
投票

通常有两种方式传递给参数的命令行选项。第一种是作为一个单一的值:

<command> -ohelloworld.exe

第二个是作为两个值:

<command> -o helloworld.exe

分析器理解都和他们有同样的结果。不幸的是你的榜样,你不是传递了两个值,而是一个与它的空间,因为在这之间没有壳可以在空间分割。那么,什么gcc看到字面上是价值-o helloworld.exe一个参数,并且由于-o其次是更多的字符,gcc将其作为文件名,包括领先的空间。因此,要解决这个问题,要么使用单个参数"ohelloworld.exe"或将其分成两个"-o", "helloworld.exe"

© www.soinside.com 2019 - 2024. All rights reserved.