如何处理main()函数的返回值?

时间:2015-02-27 18:56:43

标签: c++ c

如何在linux或windows上处理main()函数的返回值? C / C ++

1 个答案:

答案 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中查找消息资源,批处理文件没有。