OnBoardCじゃなくなったけどMage's Maze その6

7/10の日記(d:id:alg-lj:20050710:p1)に書いたけど、OnBoardCで開発を続けるならソースをマルチセグメント化する必要があった。
でも面倒なので、今はPODSで開発している。
さて今日もソースをいじってコンパイルを繰り返していたら、またまた見慣れないエラーが出た。
region coderes is full
…なんだこりゃ?
今までのエラーはソースのどこそこにエラーがあるよ、と出ていたが、今回のは違った。
オブジェクト?(なんちゃら.oっていうファイル)を作った後で出たエラーだった。
おいおい今度はなんだよー。
とおもいつつ、ググってみると、1件ひっかかった。
どうやらコンパイル後のcodeリソースが32kbを超えてしまったらしい。
たしかに直前にコンパイルできたprcファイルを見てみると、codeリソースが限りなく32kbに近づいていた。
はー、そういうことですか。
しかしこれを回避するには、やっぱりマルチセグメント化して、一つ一つのcodeリソースの大きさを32kb以下に収めないといけないようだ。
うー、めんどくさい…。
他に回避できる方法がないか、なんとなく考えていたら、一つ思いついた。
ソースに長めの文字列を埋め込んでる箇所が結構あったので*1、この文字列をtSTLとかのリソースに追い出して、code内部ではそのリソースから文字列を呼び出すようにしたら、だいぶ節約になるんじゃないか?
ってことで試してみた。
…いける。
3kbくらい、codeリソースが小さくなった。
どんだけ文字列埋め込んでんだよ、って感じですが。

*1:文章みたいに長い文字列は、ソースに埋め込まずリソースに追い出した方がいいらしい。多言語化もやりやすくなる。