首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有与SubSystem关联的#define

是否有与SubSystem关联的#define
EN

Stack Overflow用户
提问于 2011-01-30 04:18:06
回答 3查看 5.7K关注 0票数 15

我正在使用宏创建main,并且需要能够在编译时检查所选的SubSystem、/SUBSYSTEM:WINDOWS或/SUBSYSTEM:CONSOLE,以便生成适当的main函数。有没有我可以检查的#define来实现这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-30 06:02:44

如果你想让你的库(或者其他库)的用户使用起来更简单,你可以从你的宏中生成WinMainmain。默认情况下,链接器将控制台应用程序设置为从main启动,将win32应用程序设置为从WinMain启动。另一个"main“函数将被忽略。

(假设代码的其余部分不使用任何主函数参数(argcargvhInstance等),如果要同时使用这两个参数的话。)

可以使用_CONSOLE定义,但它不会自动出现;您必须手动将其添加到项目属性中。另一方面,启动符号的选择是自动的。因此,仅仅提供这两个功能,并让链接器选择,可能会让生活变得更容易,因为项目创建者不需要设置任何东西,而且确实可以从windows切换到控制台应用程序(甚至可能是按配置),而不需要做任何事情。

票数 6
EN

Stack Overflow用户

发布于 2011-01-30 04:27:31

_CONSOLE应该可以帮你完成这项工作。

如果您真的想走这条路,也可以使用#pragma comment( linker, "/subsystem:windows" )#pragma comment( linker, "/subsystem:console" )选择子系统。

票数 14
EN

Stack Overflow用户

发布于 2011-01-30 05:04:39

这并不是它真正的工作方式。你必须在控制台应用程序和原生Windows应用程序中编写截然不同的代码。在控制台应用程序中,您使用printf或cout来生成输出,如果有鼠标的话也没有太多用处。原生Windows应用程序需要一个消息循环,并使用检测WM_PAINT消息以更新窗口的窗口过程来创建窗口。等等。

但是您可以编写同时完成这两个任务的代码。只需编写一个main()和一个WinMain()函数,CRT就会自动调用正确的函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4839181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档