如何测试gcc是否无法在Windows批处理文件(cmd)中编译程序?

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

我做了这个随机的C代码(app.c

int main()
{
    ERROR; // Just a random code to make sure the compiler fails.
}

和这个批处理文件(run.bat

@echo off
:start
cls
echo Compiling...
gcc app.c -o app.exe
app.exe
pause
goto start

当我双击run.bat时,它给出了以下输出:

Compiling...
app.c: In function 'main':
app.c:3:2: error: 'ERROR' undeclared (first use in this function)
  ERROR; // Just a random code to make sure the compiler fails.
  ^~~~~
app.c:3:2: note: each undeclared identifier is reported only once for each function it appears in
'app.exe' is not recognized as an internal or external command,
operable program or batch file.
Press any key to continue . . .

你可以注意到最后一个错误:

'app.exe' is not recognized as an internal or external command,
    operable program or batch file.

那是因为没有app.exe,因为编译器无法编译它。为了防止发生上一次错误,我想检查gcc是否成功,如果是,请运行应用程序。

我在搜索批量检查程序的返回值,然后我学会了一个名为errorLevel的东西,所以我尝试使用它。

这是新的run.bat文件:

@echo off
:start
cls
echo Compiling...
gcc app.c -o app.exe
if %errorlevel% == 0
(
    cls
    app.exe
)
pause
goto start

它打印'Compiling...'后立即退出应用程序,我想我做错了也许..

测试GCC是否无法在Windows中编译程序的正确方法是什么?

windows batch-file gcc return-value
1个回答
1
投票

首先,请将您的文件重命名为myrun.bat而不是run.bat。让我们给gcc时间正确编译:

@echo off
:start
cls
echo Compiling...
gcc app.c -o app.exe
timeout 5
:wait
if exist app.exe (app.exe) else (timeout 5 && goto wait)
pause
goto start

最后,您的可执行文件实际上是名为app.exe还是包含空格的文件?即my app.exe

根据我的评论,你可以启动gcc并等待它。

@echo off
:start
cls
echo Compiling...
start /b /w gcc app.c -o app.exe
app.exe
pause
goto start

最后。如果包含括号的语句需要在同一行。以及其他陈述。所以改变:

if %errorlevel% == 0
(
    cls
    app.exe
)

if %errorlevel% == 0 (
    cls
    app.exe
)
© www.soinside.com 2019 - 2024. All rights reserved.