c – 为什么winmain不设置错误级别?

c – 为什么winmain不设置错误级别?,第1张

概述为什么此程序正确显示消息框,但未设置错误级别? int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow){ 为什么此程序正确显示消息框,但未设置错误级别?
int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR    lpCmdline,int       nCmdshow){  MessageBox(NulL,_T("This should return 90 no?"),_T("OK"),MB_OK);  return 90;}

我将上面的代码编译成名为a.exe的可执行文件.我在命令提示符下执行了此 *** 作:

c:\> a.exe  (message Box is displayed,I press ok)c:\> echo %ERRORLEVEL%   0

如果我使用exit(90),我会得到相同的结果;就在返回之前.它仍然说0.

我也尝试通过CreateProcess启动程序并使用GetExitCodeProcess获取结果,但它也向我返回0.我做了错误检查以确保它全部正确启动.

我最初在一个更复杂的程序中看到了这个问题所以我做了这个简单的程序来验证问题.结果是相同的,两个具有WinMain的程序始终返回0.

我尝试了x64,x86和unicode以及MBCS编译选项.所有都将0作为错误级别/状态代码.

解决方法 如果您的程序是windows应用程序而不是控制台应用程序,则命令解释程序不会等待它完成(在您按OK之前,请查看命令窗口,您将看到它已准备好进行下一个命令).

如果是这种情况,将应用程序构建为控制台子系统应用程序将解决问题.如果您需要作为windows应用程序运行,您可能会尝试等待命令完成,看看是否有效(我没有尝试过,但这似乎是一个很好的方法):

start /wait a.exeecho %ERRORLEVEL%
总结

以上是内存溢出为你收集整理的c – 为什么winmain不设置错误级别?全部内容,希望文章能够帮你解决c – 为什么winmain不设置错误级别?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237900.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存