求助:如何实现批处理文件编译GCC程序后首次直接运行?
解决批处理编译并运行C程序的窗口问题
我来帮你搞定这个问题!你遇到的核心问题是start命令的使用方式不对,导致批处理没等gcc编译完成就去执行程序了。
问题根源
你原来的代码里用了start gcc -o Mystack.exe Mystack.c && Mystack.exe:
start会新开一个独立窗口运行gcc,而当前批处理窗口会立刻继续执行后面的命令,不会等gcc编译完成&&判断的是start命令本身是否成功(只要成功打开新窗口就算成功),而不是gcc编译是否完成
所以第一次运行时,exe文件还没生成,Mystack.exe自然跑不起来;第二次exe已经存在,就能正常启动了。
解决方案1:让gcc在当前窗口编译(推荐)
直接去掉start,让批处理等待gcc编译完成后再执行程序,还可以加个判断确保编译成功:
@echo off cd "C:\Users\karli\Desktop\MCAST\VilipsKarlis\VilipsKarlis" gcc -o Mystack.exe Mystack.c if exist Mystack.exe ( Mystack.exe pause # 可选:程序运行完后暂停窗口,方便查看输出 ) else ( echo 编译失败,未生成可执行文件! pause ) exit
解决方案2:保留单独编译窗口(如果需要)
如果你想让gcc在单独窗口编译,不想让编译输出干扰程序窗口,可以用start /wait参数,让批处理等待gcc窗口关闭(即编译完成)后再继续:
@echo off cd "C:\Users\karli\Desktop\MCAST\VilipsKarlis\VilipsKarlis" start /wait gcc -o Mystack.exe Mystack.c if exist Mystack.exe ( Mystack.exe pause ) else ( echo 编译失败! pause ) exit
额外小提示
加上pause命令后,程序运行结束后窗口不会立刻关闭,你能清楚看到程序的输出结果,调试起来更方便。如果不需要的话,可以把pause删掉。
内容的提问来源于stack exchange,提问作者finsters
相关产品推荐
相关产品推荐

