首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

在Windows操作系统中,WinMain函数是程序的入口点,它是一个C/C++控制台应用程序的起点。WinMain函数的作用是初始化程序的环境,并处理程序的消息循环。

关于为什么WinMain不设置错误级别,这是因为WinMain函数的主要作用是处理程序的消息循环和窗口管理,而不是处理错误级别。在C/C++程序中,设置错误级别通常是通过调用SetErrorMode函数来实现的。如果需要设置错误级别,应该在程序的主函数(如mainWinMain)中进行,而不是在WinMain函数中。

以下是一个简单的示例,演示如何在C++程序中设置错误级别:

代码语言:cpp
复制
#include<windows.h>
#include <tchar.h>

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    // 设置错误级别
    SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);

    // 初始化程序窗口
    // ...

    // 进入消息循环
    // ...

    return 0;
}

在上面的示例中,我们在WinMain函数中调用了SetErrorMode函数来设置错误级别。这样做是为了确保在程序运行期间,系统不会弹出任何错误对话框。

总之,WinMain函数不设置错误级别的原因是它的主要作用是处理程序的消息循环和窗口管理,而不是处理错误级别。如果需要设置错误级别,应该在程序的主函数中进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么只给隔离性设置级别

提到数据库,你多半会联想到事务,进而还可能想起曾经背得滚瓜乱熟的ACID,不知道你有没有想过这个问题,事务有原子性、隔离性、一致性和持久性四大特性,为什么偏偏给隔离性设置级别?...为什么设置隔离级别?事务T1读到其他事务最新修改的数据难道不好吗?为什么这些隔离级别的中文翻译这么蹩脚,感觉好不通顺啊。为什么单单给隔离性设置级别?5.1. 为什么设置隔离级别?...为什么单单给隔离性设置级别?终于聊到了为什么单单给隔离性设置级别这个问题了。如果想想事务的4个特性,也就自然明白这个问题了。...READ COMMITTED,并开始事务T3# 在新的会话中设置SESSION级别的隔离级别,这种设置方式对当前会话的后续所有事务生效mysql> SET SESSION TRANSACTION ISOLATION...REPEATABLE READ,并开始事务T3# 在新的会话中设置SESSION级别的隔离级别,这种设置方式对当前会话的后续所有事务生效mysql> SET SESSION TRANSACTION ISOLATION

53260

PostgreSQL 为什么建议 RR隔离级别,MySQL别笑

# 从上图的执行过程我们得到了session 1 执行事务错误,并且报告为 could not serialize access due to concurrent update 的错误。...那么PG的隔离级别到底有什么问题,PG数据库主要的在隔离级别方面有以下特点 1 PG的隔离级别中是不存在 Read uncommitted 的,这点和某些世界级别数据库一样,某些数据库也不存在read...uncommitted. 2 PG 数据库在 RR 隔离级别方面,是非常严格实现相关隔离级别的要求,没有偷工减料,但这样得结果是,在RR 隔离级别中,将会对于高并发和热表的事务操作变得不友好,会产生更多的死锁...,BLOCKED 事务失败的概率会提高不少,应用程序必须有重试的机制,或者这将劝退不少的PG初级的使用者(开发人员) 3 PG 的 RC 隔离级别,严格遵守RC的隔离级别的要求,同时在金融类的场景下,...最后,MYSQL 在事务隔离级别中,为什么建议使用RR,结果与PG 一样都是建议,但MYSQL 在RR 隔离级别上的问题,主要是性能问题,这里主要指的的是 间隙锁解决幻读的问题导致的在MYSQL范围查询中导致的性能问题

10210

PHP错误实例详解错误级别配置项设置错误级别手动触发PHP错误自定义错误处理器脚本即将关闭前执行的函数

错误级别 在php.ini中可查看PHP的各个错误级别 ; Error Level Constants: ; E_ALL - All errors and warnings (includes...php 配置项 php.ini与错误相关的配置项: 选项 描述 error_reporting 设置错误报告的级别 display_errors 是否显示错误 log_errors 是否将错误记录到日志中...error_log 设置错误将存储到的文件路径 log_errors_max_len 设置log_errors的最大字节数 ingnore_repeated_errors 是否忽略重复的错误 ingore_repeated_source...是否忽略重复信息的来源 error_reporting = E_ALL & ~ E_NOTICE # 表示除了NOTICE之外的所有错误 设置错误级别 可通过以下三种方法修改 修改php.ini...'display_errors', 1); // 显示错误 echo $age; 以上错误属于notice或warning级别,不会阻断程序,如果是Fatal级别或Parse error语法错误错误

1.3K20

mysql隔离级别为什么设置为可重复读_隔离性的4个级别

默认是可重复读” 面试官:“为什么mysql选可重复读作为默认的隔离级别?” (你面露苦色,不知如何回答!) 面试官:"你们项目中选了哪个隔离级别为什么?" 你:“当然是默认的可重复读,至于原因。。...正文 我们先来思考一个问题,在Oracle,SqlServer,postgresql中都是选择读已提交作为默认的隔离级别为什么Mysql选择Read Commited作为默认隔离级别,而选择Repeatable...那么,当我们了解完mysql选可重复读(Repeatable Read)作为默认隔离级别的原因后,接下来我们将其和读已提交(Read Commited)进行对比,来说明为什么在互联网项目为什么将隔离级别设为读已提交...也就是说,我们该纠结都只有一个问题,究竟隔离级别是用读已经提交呢还是可重复读? 接下来对这两种级别进行对比,讲讲我们为什么选读已提交(Read Commited)作为事务隔离级别!...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

83110

VS2015 error LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 “int __cdecl invoke_main(void)”

最后想直接运行示例demo,我在创建新工程的时候,直接创建了一个win32窗口项目,然后环境配置完成后,将opencv 的示例代码kalman.cpp直接导入到新建的vs工程中进行编译,直接报错: 错误...LNK2019 无法解析的外部符号 _WinMain@16,该符号在函数 "int __cdecl invoke_main(void)" (?...控制台程序,那么main是入口函数,新建项目为“win32控制台应用程序” 而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。...相反,如果是windows程序,就按照相反的设置来配置即可,这里就不再赘述了。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

88410

让vc编译出的程序减小体积

上面的情况是笔者所遭遇的情况.不过后来了解vc可以通过设置参数来自定义编译方式.为什么文件那么大!...二,设置自己的入口点函数 C或C++程序默认的入口函数是main()或WinMain(),但我们现在不用什么Main,WinMain.因为这些都不是直接的入口点,编译器在产生exe文件的时候,将为我们生成真正的入口点....下面我们来定义自己的入口函数,具体是把main或WinMain改成其它的名字(如MyFun),打开"Project(工程)--->settings(设置)"选项,选中"link"选项卡,在"Category..., /help 打印此帮助消息 /w 为 n 设置警告等级 1-4 /c 只编译,链接 /W 设置警告等级(默认 n=1) /H 最大外部名称长度 /Wall 启用所有警告...- /warnaserror[+|-] 将警告视为错误 /warn: 设置警告等级 (0-4) (缩写: /w) /nowarn: 禁用特定的警告消息 - 语言 - /checked

1.9K10

Win32对话框程序(2)

文章中有些地方是自己的推断,因此肯定有叙述不准确甚至错误的地方,请指正,感谢~  *******************************正文分割*************************...*********** WinMain函数 Win32对话框程序(1)中说了WinMain是应用程序的入口,其输入参数有四个,根据MSDN上的叙述: 输入变量声明 说明 HINSTANCE    hInstance...LPSTR    lpCmdLine The command line for the application, excluding the program name int    nCmdShow 设置窗口的显示方式...lpCmdLine是包含程序名的命令行,根据MSDN使用函数GetCommandLine()也可返回命令行字符串,不过会包含程序名。...此外还有_tWinMain(需进一步查阅) 现在大体理解了WinMain函数了,接下来看看其他函数都在干什么 函数及程序框架理解 先贴WinMain函数 int APIENTRY WinMain(HINSTANCE

1.1K30

OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口

刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口。...(注意不要少了空格) 方法二:修改工程设置。 对于vc6,地方在Project->setting->Link->Project Options。...为什么这样设置下就可以了了。...不同的子系统会链接不同的主函数,控制台的会链接main,窗口的会链接WinMain,如果匹配肯定会链接失败。...现在我们使用OpenGL编程,又建立的是控制台工程,如果不进行设置肯定会出现黑窗口的,所以我们把工程的子系统改成Windows,但是我们不想改主函数为WinMain了,因为这样会很麻烦,所以我们再把程序入口改成

1.5K70

为了分析WebRTC, 重学Windows开发

如 窗口创建时发送的 WM_CREATE 消息,如果我们处理它,Windows 操作系统就不会显示创建的窗口。 但 Windows 中有那么多消息,我们每个都处理企不是要累死人?...可以设置。 lpfnWndProc :这个字段特别重要,设置消息处理函数,它是消息的中心。 cbClsExtra :不用设置。 cbWndExtra :不用设置。...hInstance :窗口句柄,与WinMain中的一样。 hIcon :窗口图标。如果是NULL,使用默认图标。 hCursor :设置光标样式。...可以设置 hbrBackground :设置窗口背景色。 lpszMenuName:菜单名。如果为NULL说明没有菜单。 lpszClassName:这个参数要提供,长度超过 256。...然后对一个最简单的 Windows程序做了剖析,指出通过 6 大步可以创建出一个最简单的 Windows程序,它们分别是: 设置入口点,WinMain。 创建 WinProc 函数。 注册窗口类。

97810

C加加游戏编程,大神十年的绝技,正确的入门,这才叫学习

学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,写代码,你还是不会编程。...DirectPlay可以让应用程序对机器进行网络功能设置,从而可以通过和其他网络玩家交流。 DirectMusic:DirectMusic是负责普通声音处理的DirectX API。...要创建一个Win32窗口就必须拥有一个WinMain函数(这不是废话是什么)。...我们可以在MSDN中查到WinMain的标准句法 int WINAPI WinMain( HINSTANCEhInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine...(依然感谢liusofttech的指出,为什么我没有引荐专门讲解3D编程数学根底的教程。我没有专门指出来,是因为简直每一本Direct3D教材里面都有一章到几章有关必备数学根底常识的讲解。

1.7K61

连接器工具错误lnk2019_2019年十大语文错误

文章目录 可能的原因 1.编译包含符号定义的源文件 2.未链接包含符号定义的对象文件或库 3.符号声明的拼写与符号的定义不同 4.使用了函数,但是参数的类型或数量与函数定义匹配 5.已声明但未定义函数或变量...9.生成依赖项仅在解决方案中定义为项目依赖项 在 Visual Studio 的早期版本中,此级别的依赖项已经足够。...有关详细信息,请参阅 :::no-loc(main)::: 函数和命令行参数或 :::no-loc(WinMain)::: 函数。...11.使用 Windows 应用程序的设置生成控制台应用程序 如果错误消息类似于函数function_name ** :::no-loc(extern)::: :::no-loc(WinMain):::...有关此设置的详细信息以及如何在 Visual Studio 中设置此属性的说明,请参阅 /SUBSYSTEM (Specify Subsystem)。

4.1K20

HGE系列之一 初窥门道

( 所谓的硬件加速,听来玄乎,其实是HGE使用了DirectX作为底层的缘故 ) 好了,第一个问题算是解决了,那么接下来,你可能会问:为什么我要使用这款名为HGE的游戏引擎 ?...hge->Input_GetKeyState(HGEK_ESCAPE) ) return true; // 如果没有按下ESC键则继续执行,即返回FALSE return false; } //标准的WinMain...函数 int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // 再此我们使用了全局变量指针hge来指向创建的HGE实例. // 不过你可以随时调用.... // 如果出现了错误该函数便返回FALSE // 并且你可以调用System_GetErrorMessage函数 // 来获取具体的错误信息 if(hge->System_Initiate(...)) { // 调用System_Start函数开始运行上面设置的FrameFunc函数. // 并且只要FrameFunc返回TRUE便一直在此循环 hge->System_Start();

1.1K20

LNK2019 无法解析的外部符号 WinMain,该符号在函数 int __cdecl invoke_main(void) (?invoke_main@@YAHXZ) 中被引用

,那么main是入口函数,在VS中新建项目为“win32控制台应用程序” 而如果入口函数指定不当,很显然c语言运行时找不到配合函数,它就会报告错误。...中文版:VC左边,解决方案窗口,在项目上点右键,选择属性->配置->链接->系统,将子系统的window设置成console....我出现这种错误由于: 我想建一个win32控制程序,结果选了win32项目,使用就出现了后面的不愉快 ?...我也不知道为什么,因为平时不改都是可以编译过去的,如果有高手麻烦指点一下。...因为空工程包含任何的源代码文件,接下来你只需要在相应的源代码文件夹和头文件文件夹加入相应的.cpp和.h文件即可。

15K51

Wannacry深度解析:第一阶段tasksche

从技术的角度来说,Machine Instruction级别的复用是绝对一致性的,并不像源代码级别的复用会因为编译器选项的不通导致最终Machine Instruction发生细微变化。...下面我们来一起来分析一下这个程序,从WinMain函数开始。...WinMain的代码很容易理解,声明了几个变量,其中CProgram对象,CPeBuilder指针,以及fpTaskStart是整个WinMain运行的关键,WinMain的目的是动态加载一个Pe dll...上面是CreateFolder的代码,很容易理解,主要是对通过此函数创建的Folder设置Hidden属性。 再次启动自己 ?...我相信即使是翻译成C++代码,看到上面的大篇幅代码也没有读下去的动力了,何况我看的是汇编级别的代码。

1.2K60

lnk2001 lnk1120_lnk1120

2.如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将得到“unresolved external on _WinMain@16”的LNK2001错误信息。   ...如果应用程序在运行库的版本 1 上运行,该函数将会生成一个错误信息。当前编译器生成的代码与运行库的版本 1 兼容。...nochkclr.obj 包含该函数的一个空版本,当您在运行库的版本 1 上运行应用程序时,nochkclr.obj 生成错误信息。...导致 LNK2019 的常见问题有: 符号声明包含拼写错误,以致于符号声明与符号定义不同。 使用了一个函数,但其参数的类型或数量与函数定义匹配。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

95020
领券