作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一些消息来源说有 -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 实现的系统上)。它重命名您的
main
至
SDL_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/
我是一名优秀的程序员,十分优秀!