如何在linux或windows上处理main()
函数的返回值?
C / C ++
答案 0 :(得分:2)
在Windows中,进程退出代码通常是Windows系统错误代码或HRESULT
,这意味着您可以通过Microsoft&#39检索描述(但遗憾的是不是C / C ++名称,如果有的话) ; s errlook
实用程序,与Visual Studio捆绑在一起。
进程退出代码通常由IDE报告,或者您可以在命令解释器中将其作为Windows中的伪环境变量%errorlevel%
或Unix-land中的$?
进行访问。
对于Windows,如果您没有Visual Studio,例如您正在使用MinGW g ++,那么您可以使用此批处理文件(只需将文本放在文件扩展名为&#34; .bat&#34;的文件中)作为穷人的 1 < / sup>替换Microsoft的errlook
:
@echo off
if "%~1"=="" ("%~f0" %errorlevel%)
powershell -Command "[ComponentModel.Win32Exception]%1" 2>nul
在Unix-land中,AFAIK关于你可以依赖的最多是退出代码0意味着成功,而任何其他意味着失败。
获取用作进程退出代码的Windows错误代码的C / C ++ 名称的一种方法是简单地搜索<winerror.h>
Windows头文件。为此,首先必须将任何负值转换为8位十六进制。但是,不能保证<winerror.h>
定义一个名称:许多系统错误代码在别处定义,一些不具有名称,HRESULT
方案允许单独的应用程序和库定义自己的代码。
检查程序调用是否失败或成功取决于命令解释程序。
使用标准的Windows命令解释器(&#34; cmd.exe&#34;,由C和C ++ system
函数调用):
C:\>cmd /c exit 0 && echo Succeeded || echo Failed. Succeeded C:\>cmd /c exit 666 && echo Succeeded || echo Failed. Failed. C:\>_
其中&#34; cmd /c exit N
&#34;只是一个任意命令(已知退出代码N)。
在Ubuntu(在Unix-land中):
alf@devubuntu32:~$ which true; which false /bin/true /bin/false alf@devubuntu32:~$ true && echo Succeded || echo Failed Succeded alf@devubuntu32:~$ false && echo Succeeded || echo Failed Failed alf@devubuntu32:~$ _
1 )穷人的替代品,因为errlook
支持在指定的DLL中查找消息资源,批处理文件没有。