目次 - API(機能別) - 初期化と終了 - SDL_InitSubSystem

# SDL_InitSubSystem

サブシステムを個別に初期化する.

## 構文

`int SDL_InitSubSystem(Uint32 flags)`

## 引数

flags | SDL_Init()と同じ

## 戻り値

成功のとき0, エラーのとき負の数のエラーコードを戻す. SDL_GetError()を呼んで詳細を知ることができる.

## サンプルコード

``

    /* ジョイスティックとビデオを分けて初期化する */
    SDL_Init(SDL_INIT_VIDEO);

    SDL_Window* window = SDL_CreateWindow("A Window",
        SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480,
        SDL_WINDOW_FULLSCREEN);
    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);

    /* ここでビデオの処理を行う */

    /* ジョイスティックサブシステムを初期化する */
    SDL_InitSubSystem(SDL_INIT_JOYSTICK);

    /* ここでビデオとジョイスティックの処理を行う */

    /* 両方のシステムを終了する */
    SDL_Quit();

## 詳細

SDL_Init()で初期化した後でもSDL_InitSubSystem()で未初期化のサブシステムを初期化することができる.

SDL_Init()はアサーションとクラッシュ保護を初期化し, その後SDL_InitSubSystem()を呼んでいる. それらの保護を回避したい場合は直接SDL_InitSubSystem()を呼ぶとよい.

サブシステムの初期化は参照カウントされている. そのため, 手動で正常にサブシステムを終了させるためには, それぞれのSDL_InitSubSystem()に対してSDL_QuitSubSystem()を呼ぶ(またはSDL_Quit()を呼んで強制的に終了する)必要がある. サブシステムが既に読み込まれている場合は, この関数を呼ぶと参照カウントが加算される.

## 関連項目(関数)

SDL_Init
SDL_Quit
SDL_QuitSubSystem

## SDL Wikiへのリンク

SDL_InitSubSystem - SDL Wiki