gpt4 book ai didi

windows - 如何测试 gcc 是否在 Windows 批处理文件 (cmd) 中编译程序失败?

转载 作者:行者123 更新时间:2023-12-05 06:30:35 25 4
gpt4 key购买 nike

我制作了这个随机的 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 是否成功如果成功运行应用.

我在 SO 中搜索了有关在 Batch 中检查程序的返回值的信息,然后我了解到一个叫做 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 中编译程序失败的正确方法是什么?

最佳答案

首先,请将您的文件重命名为 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 还是包含空格的文件?即 我的 app.exe

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

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

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

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

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

关于windows - 如何测试 gcc 是否在 Windows 批处理文件 (cmd) 中编译程序失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com