我应该在VC+中使用什么子系统+;? 我在Windows 8上使用VC++ 12,我想制作一个C++程序,它运行在Windows、OS X和Linux上,没有任何控制台或UI(用户界面)。

我应该在VC+中使用什么子系统+;? 我在Windows 8上使用VC++ 12,我想制作一个C++程序,它运行在Windows、OS X和Linux上,没有任何控制台或UI(用户界面)。,c++,visual-c++,C++,Visual C++,我可以在Properties>Linker>System中指定哪个子系统S,以便我的程序能够在Windows、OS X和Linux上运行,而无需任何控制台或UI(用户界面) 我查看了和其他主题,但没有找到足够的详细信息。可执行代码将仅在一个系统上运行。OS/X、Linux或Windows。但是,您可以用一种可移植的方式编写源代码,这样您只需编译它就可以在另一个平台上运行它 如果这是您想要的,最好的选择是使用控制台子系统。您的程序将有一个正常的main,标准的io通道cout、cin、cerr(或

我可以在
Properties>Linker>System
中指定哪个子系统S,以便我的程序能够在Windows、OS X和Linux上运行,而无需任何控制台或UI(用户界面)


我查看了和其他主题,但没有找到足够的详细信息。

可执行代码将仅在一个系统上运行。OS/X、Linux或Windows。但是,您可以用一种可移植的方式编写源代码,这样您只需编译它就可以在另一个平台上运行它

如果这是您想要的,最好的选择是使用控制台子系统。您的程序将有一个正常的main,标准的io通道cout、cin、cerr(或stdout、stdin、stderr)和文件描述符0、1和2也将是标准的。这样,我经常有在Windows上运行良好的程序(使用MSVC编译),并且在gcc for Linux上编译时也不需要任何修改


另一方面,Windows子系统用于开发严重依赖Windows API的本机Windows GUI。

Console,毫不奇怪,意味着它分配了一个控制台。Windows意味着没有控制台,您通常需要创建一个窗口,但您不必这样做。Visual Studio不会为您编译OS X和Linux版本。@RetiredInja为什么不使用“可扩展固件接口”或“本机”或“POSIX”?正如您发布的链接所说,“本机”和“POSIX”是为早已过时的Windows NT设计的,并不意味着与任何非Windows系统兼容。我不知道EFI是做什么的。那“可扩展固件接口”呢?@Coding_King我除了控制台和WINDOWS子系统之外,从来没有使用过其他任何东西。AFAIK、NATIVE、BOOT和EFI_*仅用于特殊活动:驱动程序或BOOT.EFI/UEFI与操作系统执行的程序代码无关。如果您正在编写引导加载程序来实际加载操作系统(或类似于启动诊断接口的级别),您可能会关心它。如果没有,你可能会忘记你读过这个词。