在编译中检测 -mconsole 和 -mwindows
Detecting -mconsole and -mwindows in compilation
这可能是一个简单或愚蠢的问题,但我找不到答案:
是否可以在编译时检查 Windows 上的 GCC 是否使用 -mwindows 或 -mconsole 选项调用?我想将输出定向到标准输出或消息框,具体取决于此选项,例如
#ifdef CONSOLE_BUILD
printf("Hello on stdout");
#elifdef GUI_BUILD
MessageBoxW( NULL, L"Hello on GUI", NULL, MB_OK );
#endif
-mconsole
和 -mwindows
只影响链接器,不影响编译器。每当指定 -mconsole
时,您都可以使用 GCC 规范文件添加 -DCONSOLE_BUILD
,但这实际上是自定义 GCC 修改。
作为替代方案,似乎有多种方法可以确定控制台 window 是否与进程相关联,例如 GetConsoleWindow
function(但我不是 Windows 程序员).
这可能是一个简单或愚蠢的问题,但我找不到答案:
是否可以在编译时检查 Windows 上的 GCC 是否使用 -mwindows 或 -mconsole 选项调用?我想将输出定向到标准输出或消息框,具体取决于此选项,例如
#ifdef CONSOLE_BUILD
printf("Hello on stdout");
#elifdef GUI_BUILD
MessageBoxW( NULL, L"Hello on GUI", NULL, MB_OK );
#endif
-mconsole
和 -mwindows
只影响链接器,不影响编译器。每当指定 -mconsole
时,您都可以使用 GCC 规范文件添加 -DCONSOLE_BUILD
,但这实际上是自定义 GCC 修改。
作为替代方案,似乎有多种方法可以确定控制台 window 是否与进程相关联,例如 GetConsoleWindow
function(但我不是 Windows 程序员).