#define SDL_NODISCARD [[nodiscard]]
これは関数の戻り値を無視すべきでないことをコンパイラに知らせるヒントである.
NODISCARD関数の戻り値を放置した(戻り値がvoidであるかのように関数を呼んだ)場合, コンパイラは警告を発する.
一般的には戻り値でエラーをチェックするのは良い方法だが, 正当な理由で行わない場合もある. どの関数をNODISCARDでタグ付けするかはよく検討すること. これは関数が失敗したとき予期できない致命的な問題を引き起こすような場合に最も効果的である. ファイルの書き込み関数の戻り値は全てチェックするが, ファイルのクローズの呼び出しは決して失敗しないとみなすのはよい例である.
関数の呼び出し側がNODISCARDの戻り値を無視したい場合は, 関数を(void)でキャストすることができる. これは意図的なものであることをコンパイラに伝える.
nodiscardに対応していないコンパイラの場合, このマクロは何もしない.