我正在学习使用sublime3文本编辑器编写C程序,我有两个不同的崇高版本 此构建在CMD控制台上输出其执行;
> {
"cmd": ["gcc", "$file_name", "-o", "${file_base_name}.exe", "&&", "start", "cmd", "/k", "$file_base_name"],
"selector": "source.c",
"working_dir": "${file_path}",
"shell": true
}
而另一个构建在sublime控制台上输出它的执行
> {
"cmd": ["gcc", "$file_name", "-o", "$file_base_name"],
"selector": "source.c",
"working_dir": "${file_path}",
"variants":
[
{
"name": "Run",
"cmd": ["gcc","${file}", "-o", "$file_base_name", "&&", "$file_path/$file_base_name"],
"shell":true
}
]
}
我更喜欢第二个版本,但只有当你用它来运行非交互式程序时才会工作,例如"Hello world"
程序,当我用它来运行这样一个简单的交互式程序时,它会给我错误信息:
#include <stdio.h>
#include <float.h>
// variable declaration;
int main()
{
float a,b,sum;
printf("Enter value of a\n");
// for float u use "f" instead of d
scanf("%f", &a);
printf("Enter value of b\n");
scanf("%f",&b);
sum=a+b;
printf("The sum of %f and %f = %f\n",a,b,sum);
return 0;
}
错误消息:
C:/ MinGW的/ bin中/../ LIB / GCC /的mingw32 / 5.3.0 /../../../../的mingw32 / bin中/ ld.exe: 无法打开输出文件addition.exe:Permission denied collect2.exe: 错误:ld返回1退出状态[以0.3秒完成]
我想知道我是否可以在sublime控制台上执行交互式程序,或者我需要对我的sublime构建做一些事情。
答案 0 :(得分:0)
简短版本:不,您无法在Sublime中运行交互式程序(并与之交互)。
来自链接器的错误消息告诉您它要创建/修改文件addition.exe
,但不允许这样做,因为操作系统(在本例中为windows)告诉它可以&# 39;吨
其根本原因是Windows不允许您删除/修改当前正在使用的文件,在这种情况下意味着它现在正在运行。
要找到问题的结论,就无法直接在sublime中运行交互式程序;或者更确切地说,您可以运行这样的程序,但控制台中的输入与您正在运行的程序之间没有任何关联。
这意味着当您运行该程序时,您无法与其进行交互,但它仍然坐在那里等待您输入内容。然后,当您修改代码并尝试再次构建并运行它时,您会收到此处显示的错误,因为可执行文件仍在运行且无法修改。在这种情况下,您可以取消构建以停止正在运行的程序。
为了运行这样的程序,你需要在Sublime之外运行它,这样你就可以与它进行交互(或者使用为你做这个的构建系统,例如你的第一个例子)。