I’m creating main with a macro and need to be able to check the selected SubSystem at compile time, /SUBSYSTEM:WINDOWS or /SUBSYSTEM:CONSOLE, in order to generate the appropriate main function. Is there a #define I can check that accomplishes this?
Share
If you are trying to make things easy for users of your library (or whatever it is), you could just generate both
WinMainandmainfrom your macro. The linker by default sets console apps to start atmain, and win32 apps to start atWinMain. The other “main” function will be ignored.(Presumably the rest of the code doesn’t use any of the main function arguments (
argc,argv,hInstance, etc.), if it’s to work with both.)The
_CONSOLEdefine could be used, but it doesn’t appear automatically; you have to add it manually in to the project properties. The selection of startup symbol, on the other hand, is automatic. So just providing both functions, and letting the linker pick, might make life easier, because the project creator doesn’t have to set anything up, and can indeed switch from windows to console app (possibly even per-configuration) without having to do anything.