控制台應用程序(Console Application)與 Windows 圖形界面應用程序(GUI Application)在運行機制上有本質不同:
Code::Blocks 默認創建 GUI 專案時會鏈接 kernel32.lib 等圖形庫,而 Visual Studio 2013 的「控制台應用程序」模板預設子系統為 CONSOLE,入口點為 main;若選擇「Windows 桌面應用程序」則子系統為 WINDOWS,入口點為 WinMain。IDE 只是根據專案模板設置鏈接器參數(/SUBSYSTEM:CONSOLE 或 /SUBSYSTEM:WINDOWS)。
最直接的理解方式:分別編寫一個「Hello World」控制台程序和一個彈出 MessageBox 的 Windows 程序,運行觀察——前者在黑框輸出文字,後者無控制台彈出對話框。這也解释了為何調試時 VS 能在「輸出」窗口顯示控制台程序的 printf,而 GUI 程序需用 OutputDebugString。