teppy関数内で使うローカルな文字列テーブル(配列)の定義には注意が必要です。1月~12月までの月を数値で渡すと、英語の文字列を取得できる関数monthToEnglishを作ってみましょう。0;}無事、完成しました。有効範囲のエラー処理など細かい部分は端折ってますが適切な値を渡す限りは要件に見合った挙動をします。この関数ですが、大いなる無駄処理が走る可能性があります。最適化を有効にした上で、アセンブラを見てみましょう。-O341行目~に注目です。"dr".globl.refptr.__dso_handle.linkoncediscard.refptr.__dso_handle:.quad__dso_handleMONTH_ENGLISH_TABLEはこの関数が呼び出される度にスタック上にコピーされます。constexprに変えても出力結果は同じです。スタック上に値を生成したいという目的が無いのならば、このコードはこの関数が呼ばれる度にただただ不要な処理を走らせることになるのであまりよろしくありません。テクスチャ名のリスト、モーション名のリスト、気軽にローカルで定義することは良くあるかと思います。-O3ですら、前述のような(プログラマの意図に対して)無駄な処理が走ることは覚えておく価値があると思います。この問題は定義にstaticを付けることで簡単に回避できます。{"January","February","March","April","May","June","July","August","September","October","November","December",};この場合のアセンブラコードを見てみましょう。"dr".globl.refptr.__dso_handle.linkoncediscard.refptr.__dso_handle:.quad__dso_handle見違えるほどスッキリしました。このように、関数ローカルな場所に文字列テーブルを作る時は呼吸をするようにstaticを付けるというプラクティスは悪くありません。