Sublime Text 3 编译和 运行(在终端中)C on OS X 传递参数

Sublime Text 3 compile and run (in terminal) C on OS X with passed arguments

我正在尝试在 Sublime Text 3 中编译一个 C 程序,然后 运行 在 OS X Yosemite 上的终端(通过 Sublime Text 打开)中编译它。我的构建系统是:

{
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",

    "variants":
    [
        {
        "name": "Run",
        "cmd": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
        }
    ]
}

例如,当我构建 test.c 时,它编译得很好。当我 运行 程序时,我得到这个:bash: line 1: 916 Segmentation fault: 11。我确定这是因为我的程序需要传递给它的参数。

所以我有两个问题:

  1. 如何更改构建系统,以便在我 运行 它时打开终端并在其中 运行?

  2. 如何将参数传递给它之前的程序 运行s?例如,在 Linux 上,我会输入 ./test hello 20932aa,它将 运行 正常。我怎样才能在 Sublime Text 3 (OS X Yosemite).

  3. 上实现相同的效果

这就是您在构建系统中编译 ST3 和 运行 C 代码所需的全部内容。只需用您的参数替换 arg1 arg2 arg3 并保存您的构建系统,然后像往常一样在您的 C 程序上使用 Tools -> Build

&& 运算符允许您在运算符之后执行另一个 "shell_cmd"(shell 命令)。

{
    "shell_cmd": "make ${file_base_name} && ./${file_base_name} arg1 arg2 arg3"
}

或者,这是一个具有所有功能的构建系统。

{
    "shell_cmd" : "gcc $file_name -o ${file_base_name}",
    "working_dir" : "$file_path",
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "variants":
    [
        {
            "name": "Run",
            "shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name} arg1 arg2 arg3"
        }
    ]
}

如果您希望您的程序在新终端中打开 window,请使用此构建系统。但是你不能给它传递参数。

{
    "shell_cmd": "make ${file_base_name} && open -a Terminal.app ${file_path}/${file_base_name}",
}