gpt4 book ai didi

c++ - libSDL2main.a 的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 07:44:45 25 4
gpt4 key购买 nike

一些消息来源说有 -lSDL2main.a作为构建 SDL2 程序时要链接的文件之一,但有些没有。该程序在任何一种情况下都可以正常工作。它是干什么用的?

最佳答案

其目的是使所有平台上的入口点相同 - int main(int argc, char **argv) , 带有 UTF8 编码的参数。虽然如此,例如linux(其中 SDLmain 不存在或为空),其他目标系统可能遵循不同的方案。
例如,Windows 程序可能有不同的入口点 - main , WinMain , wmain .使用 SDLmain,您无需以不同方式处理它 - 只需使用 main就像在其他系统上一样(由 SDL 重命名为 SDL_main )。
基本上在您的代码中,它只归结为 SDL_main.h 中的这一行 header (如果包含 SDL.h 则自动包含):

#define main    SDL_main
(仅在具有 SDLmain 实现的系统上)。它重命名您的 mainSDL_main并注入(inject)系统特定的入口点(在 SDL2main 库中实现),它转换参数,进行一些特定于平台的初始化,并调用您的 SDL_main .
这是否是一件好事还有待商榷。可以使用 #define SDL_MAIN_HANDLED 禁用此功能在包括 SDL.h 之前.在这种情况下,您定义自己的特定于平台的入口点,执行所有必需的初始化,但 SDL 要求您调用 SDL_SetMainReady在调用任何其他 SDL 东西之前。
因此,要回答您的问题,为什么有时使用它而有时不使用它-之所以如此,是因为在某些情况下,当您已经拥有“标准” main它什么也不做。

关于c++ - libSDL2main.a 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67254095/

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