[C++] SDLでテトリスを作る with ChatGPT

ChatGPTの力を借りながらプログラミングを進めています。

以下エラーへの解決策について有用なヒントをもらえました。

src/IO.cpp:27:2: error: no matching function for call to 'boxColor'
        boxColor (mScreen, 0, 0, mScreen->w - 1, mScreen->h - 1, mColors[BLACK]);
        ^~~~~~~~
/opt/homebrew/include/SDL2/SDL2_gfxPrimitives.h:98:31: note: candidate function not viable: no known conversion from 'SDL_Surface *' to 'SDL_Renderer *' for 1st argument
        SDL2_GFXPRIMITIVES_SCOPE int boxColor(SDL_Renderer * renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Uint32 color);

一つ目の質問には堂々の誤回答、二つ目の質問には正答を返してきました。回答の中から使えそうな関数をピックアップして解決させることができました。

Google検索のノイジーな情報に惑わされることなくプログラミングに専念でき、素晴らしいの一言です。

本来はSDLのドキュメントを自分で読み込むべきですが、学習初期や急ぎの時はChatGPTでさくっと解決させればいいでしょう。

ソースコードのコメント内にあるバックスラッシュの意味

ChatGPTによるとDoxygenのマークアップ記法とのことです。

このような書き方をすることで関数名や引数をホバリングした際にバックスラッシュ以下の説明を表示できたりします。

これまで様々なソースコードを見てきましたが、このような書き方をしているのは中級以上のプログラマで出現頻度は低めだと思います。

質問:
C++のコメント内に\param,\saのような表現がありますがどういう意味ですか

ChatGPT回答:
C++ のコメント内に \param と \sa のような表現がある場合、それらは Doxygen のマークアップ記法を使用していることが考えられます。

Doxygen は、ソフトウェア開発において、C++ や Java、Python などの言語のソースコードから文書を生成するツールです。Doxygen は、ソースコード内のコメントに特定のマークアップ記法を使用して、文書化する内容を指定することができます。

\param: 関数やメソッドの引数に関する情報を文書化するために使用されます。例えば、次のようなコメントは、関数 foo の引数 x の説明を文書化しています。

/**
 * This is the description of function foo.
 * 
 * \param x The first argument of function foo.
 */
void foo(int x) { /* ... */ }

\sa: 関数やメソッドと関連する関数やメソッドに関する情報を文書化するために使用されます。例えば、次のようなコメントは、関数 foo が呼び出す関数 bar に関連していることを示しています。

/**
 * This is the description of function foo.
 * 
 * \sa bar
 */
void foo() { bar(); /* ... */ }

このように、Doxygen のマークアップ記法を使用することで、より詳細かつ統一された文書を生成することができます。