- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,大约一年前我开始使用 SDL,我只是认为 SDL_Init 初始化了 SDL 的子系统(如此处所写:https://wiki.libsdl.org/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;
}
}
// [...]
}
问题是某天你可能会因为某些东西没有被初始化而遇到一个错误,你将无法轻易找到原因。简而言之,初始化您使用的子系统。它不会花费您任何费用,而且可能会为您省去很多麻烦。
关于sdl - SDL_Init 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53571360/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!