SDL_Init 的作用

SDL_Init 的作用

很多情况下不调用SDL_Init也没出问题,那么SDL_Init有啥用呢?
SDL_Init 初始化了 SDL 的子系统.事实上,它只是转发到 SDL_InitSubSystem

int
SDL_Init(Uint32 flags)
{
    return SDL_InitSubSystem(flags);
}

现在,如果您不调用 SDL_Init 或 SDL_InitSubSystem 但在使用子系统时没有遇到任何问题,那么您可能只是幸运.通过查看 SDL 源代码,您可能会发现很多函数在使用资源之前都会检查是否已初始化,并在可能的情况下进行初始化.例如,SDL_GetTicks 在需要时调用 SDL_TicksInit

Uint32
SDL_GetTicks(void)
{
// [...]
    if (!ticks_started) {
        SDL_TicksInit();
    }
// [...]
}

同样,SDL_CreateWindow 会在需要时调用 SDL_VideoInit

SDL_Window *
SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags)
{
// [...]
    if (!_this) {
        /* Initialize the video system if needed */
        if (SDL_VideoInit(NULL) < 0) {
            return NULL;
        }
    }
// [...]
}

问题是,有一天你可能会因为某些东西没有被初始化而遇到一个错误,你将无法轻松找到原因.简而言之,初始化您使用的子系统.它不会花费您任何费用,而且可能会为您省去很多麻烦.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都市无名者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值