如何在 c++ 中将不参数传递到 pragma 注释中

How to pass no argument into pragma comment in c++

提问人:Foryxled_Dev 提问时间:9/17/2023 最后编辑:Eric PostpischilForyxled_Dev 更新时间:9/17/2023 访问量:52

问:

我希望我的程序在检测到解决方案配置为调试时显示控制台窗口。如果检测到释放,则不应显示控制台窗口

#include "Window.h"

int main(int argc, char* argv[]) {
    Window Game;

#if defined(_DEBUG)
#pragma comment(linker, "/SUBSYSTEM:console /ENTRY:")
    Game.run();
#else
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
    Game.run();
#endif
}

上面的源代码不起作用,因为:

LNK1146 no argument specified with option '/ENTRY:'

所以我想知道如何在 #pragma 注释中传递任何参数(或者只是一般地改进此源代码)

(使用 Visual Studio 2023 和 C++ 20)

任何帮助都是值得赞赏的!

C++ 编译指示

评论

0赞 user3840170 9/17/2023
实际上,为什么要为此烦恼呢?/ENTRY
1赞 Eric Postpischil 9/17/2023
不要为 C++ 问题标记 C。

答:

2赞 ChrisB 9/17/2023 #1

MSVC 的 /ENTRY 标志必须始终后跟 。因此,如果您想保留默认值,请不要在这种情况下通过::function_name/ENTRY

#include "Window.h"

int main(int argc, char* argv[]) {
    Window Game;

#if defined(_DEBUG)
#pragma comment(linker, "/SUBSYSTEM:console")
    Game.run();
#else
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
    Game.run();
#endif
}