当我们坐上公共汽车,我们真正关心的问题,是这车是开还是停。同样,当SDL已经装载,我们更关心的问题是它的运行状态,并且,有哪些“旗子”插在了上面?所以,我们可以问问SDL:xx_flag was init?
int SDL_WasInit(Uint32 flags);
这里,我们可以将SDL_INIT_*的5个具体旗子看成一种用法;使用了“|”的复合旗子以及那个EVERYTHING的概念看成另外一种用法。当flag为某个具体旗子的时候,如果该旗子插上了,则返回该旗子的位标值本身,否则就返回0。当参数不止一面旗子的时候,则返回这些旗子中插上了的那部分的“|”值。(其实就是返回那些在你指定的旗子中插上的那些,只是电脑看起来很直观,人看起来很不直观——特别在使用非2进制表示的时候)。
官方文档里面举了3个例子,后面我将举一个我个人觉得比较直观的程序例子。
/* Get init data on all the subsystems */
Uint32 subsystem_init;
subsystem_init=SDL_WasInit(SDL_INIT_EVERYTHING);
if(subsystem_init&SDL_INIT_VIDEO)
printf("Video is initialized./n");
else
printf("Video is not initialized./n");
/* Just check for one specific subsystem */
if(SDL_WasInit(SDL_INIT_VIDEO)!=0)
printf("Video is initialized./n");
else
printf("Video is not initialized./n");