HSP のプリプロセッサで擬似的に再帰できないか試してみた。

#ifndef I
#const I 0
#endif

#if I < 10

mes I

#const TMP I
#undef I
#const I TMP+1
#undef TMP

#include __FILE__

#endif

なかなかいい感じ。 上限はどのくらいか調べてみたら 31 回でした( 32 回以上でエラー)。

ちゃんとファイルに保存して実行しないとうまく動かないので注意してください。 / カウントダウンしていたのをインクリメントするものに変更しました。

__FILE__"hsptmp" に変更すれば保存しなくても実行できるでしょう(標準のスクリプトエディタや hspcmpWrapper.dll を使っていた場合)

#include のネスト制限はもちろんだけど、 #if のネスト制限に引っかかるんですねこれ。 / #endif を消すと、それでもなぜかうまく動く上に #if のネスト制限らしきエラーも出なくなりました、謎。

おまけ : FizzBuzz

#ifndef I
#const I 1
#endif

#if I <= 32

#if I \ 15 == 0
 mes "FizzBuzz"
#else
# if I \ 5 == 0
   mes "Buzz"
# else
#  if I \ 3 == 0
    mes "Fizz"
#  else
    mes I
#  endif
# endif
#endif

#const TMP I
#undef I
#const I TMP+1
#undef TMP

#include "hsptmp"

#elif が欲しくなっちゃいますね。

なんとあの Gonbei さんにのっかっていただきました。階乗です。

インフォメーション

公開日時
2007年12月1日 午前11時56分13秒
最終更新日時
2007年12月20日 午後10時34分44秒
カテゴリ
HSP