gpt4 book ai didi

c - 更专业的宏

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:06 27 4
gpt4 key购买 nike

我是一个相当年轻的程序员。就在我大三的时候,今年夏天我选了 C,试图提高自己的能力。

我刚刚开始使用 C 语言编写模型渲染器,我希望它是跨平台的。

问题是在 MinGW 中编译 opengl + sdl 应用程序要我更改主函数的声明行。

正常方式:int main(int argc, char **argv);

MinGW winapi 方式:int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);

我这样做的方式完全是贫民窟

#ifdef _WIN32
#define MAIN WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
#else
#define MAIN main(int argc, char **argv)
#endif

int MAIN {
return 0;
}

我的问题是:是否有更专业的方法来做到这一点?

最佳答案

我会做一些简单的事情

void doMyStuff(void) {
...
}

#ifdef _WIN32
WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nShowCmd) {
doMyStuff();
ExitProcess(0); // or whatever
}
#else
int main(int argc, char **argv) {
doMyStuff();
return 0 ;
}
#endif

它比您的版本稍长,但非常清晰并且为您提供了放置特定于平台的启动代码的地方,一旦您的程序必须做一些有趣的事情,您肯定需要这些代码。

(顺便说一下,我认为 Windows 程序同样可以很好地使用标准的 main() 入口点——至少 Visual C/C++ 应该是这样。WinMain 的所有遗留参数都可以从显式 API 中获取如果您需要它们,则调用它们。但是,由于无论如何您都需要一些特定于平台的启动代码,所以这并不重要)。

关于c - 更专业的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7183204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com