是否存在与SubSystem关联的#define

rag*_*nar 15 c++ visual-studio

我正在使用宏创建main,并且需要能够在编译时检查选定的SubSystem,/ SUBSYSTEM:WINDOWS或/ SUBSYSTEM:CONSOLE,以便生成适当的主函数.是否有#define我可以检查完成此操作?

Eug*_*nca 13

_CONSOLE应该为你做的伎俩.
您也可以使用#pragma comment( linker, "/subsystem:windows" )#pragma comment( linker, "/subsystem:console" )如果您真的想要选择子系统.

  • 这绝对是更好的答案,因为它直接回答了手动指定系统与让链接器确定它(或更改项目设置)的原始问题. (2认同)

小智 5

如果您想使您的库用户(或任何它的用户)使用起来很容易,则可以同时从它们WinMainmain宏中生成它们。默认情况下,链接器将控制台应用程序设置为main,将Win32应用程序设置为WinMain。另一个“主要”功能将被忽略。

(大概是代码的其余部分不使用任何的主要功能参数(argcargvhInstance等),如果它的工作与两个。)

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