/SUBSYSTEM (Specify Subsystem)
Collapse the table of content
Expand the table of content
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer

/SUBSYSTEM (Specify Subsystem)



Win32 character-mode application. Console applications are given a console by the operating system. If main or wmain is defined, CONSOLE is the default.
Extensible Firmware Interface
The EFI_* subsystems. See the EFI specification for more information. For example, see the Intel web site. The minimum version and default version is 1.0.
Device drivers for Windows NT. If /DRIVER:WDM is specified, NATIVE is the default.
Application that runs with the POSIX subsystem in Windows NT.
Application does not require a console, probably because it creates its own windows for interaction with the user. If WinMain or wWinMain is defined, WINDOWS is the default.
Application that runs on a Windows CE device.
major and minor (optional)
Specify the minimum required version of the subsystem. The arguments are decimal numbers in the range 0 through 65,535. See the Remarks for details. There are no upper bounds for version numbers.


The /SUBSYSTEM option tells the operating system how to run the .exe file.

The choice of subsystem affects the default starting address for the program. For more information, see the Entry-Point Symbol (/ENTRY:function) option.

The optional minimum and default major and minor version numbers for the subsystems are as follows.

Subsystem Minimum Default
CONSOLE 3.10 (x86)
5.01 (Itanium)
4.00 (x86)
5.01 (Itanium)
WINDOWS 3.10 (x86)
5.01 (Itanium)
4.00 (x86)
5.01 (Itanium)
NATIVE (with DRIVER:WDM) 1.00 (x86)
1.10 (Itanium)
1.00 (x86)
1.10 (Itanium)
NATIVE (without /DRIVER:WDM) 3.10 (x86)
5.01 (Itanium)
4.00 (x86)
5.01 (Itanium)
POSIX 1.0 19.90

To set this linker option in the Visual Studio development environment

  1. Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
  2. Click the Linker folder.
  3. Click the System property page.
  4. Modify the SubSystem property.

To set this linker option programmatically

See SubSystem Property.

See Also

Setting Linker Options | Linker Options

© 2016 Microsoft