开发者

difference between Console (/SUBSYSTEM:CONSOLE) and Windows (/SUBSYSTEM:WINDOWS)

can somebody please explain difference between those two declarations in the properties of the linker in visual studio 2008( please as simple as possible, I'm new in the world 开发者_运维问答of C++) thanks in advace

edit: if possible can you give me please two small programs to show an effect


/SUBSYSTEM:CONSOLE) is for console based applications. You should define main function in code.

/SUBSYSTEM:WINDOWS) is for GUI applications. You should define WinMain function.


CONSOLE: Console window is shown. WINDOWS - program starts without Console window.

Edited, looking at another answers. Notice that /SUBSYSTEM flag doesn't affect the program entry point. Program entry point is defined by /ENTRY linker option. Usually /SUBSYSTEM:CONSOLE has "main" entry point, and /SUBSYSTEM:WINDOWS has "WinMain" entry point. But it is possible, for example, to create GUI application with WinMain entry point and Console window.


See here. VS2008 automates some things for you which has lead to the confusion.

CONSOLE Win32 character-mode application. The operating system provides a console for console applications. If main or wmain is defined for native code, int main(array ^) is defined for managed code, or you build the application completely by using /clr:safe, CONSOLE is the default.

WINDOWS Application does not require a console, probably because it creates its own windows for interaction with the user. If WinMain or wWinMain is defined for native code, or WinMain(HISTANCE *, HINSTANCE *, char *, int) or wWinMain(HINSTANCE *, HINSTANCE *, wchar_t *, int) is defined for managed code, WINDOWS is the default.


/SUBSYSTEM:CONSOLE results in a process with a console and /SUBSYSTEM:WINDOWS does not.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜