なぜ
> オブジェクトファイルのサイズ軽量化のために#defineを使ったのが間違い
なのか、ちょっとだけ補足を。間違っていたら訂正お願いします。
#defineは「置き換え」に過ぎないので、スクリプトの軽量化にはなってもプログラムの軽量化にはなりません。
例えば
#define MESSAGE "Hot soup proseccor ver3.1"
mes MESSAGE
はコンパイル時にMESSAGEを"Hot soup proseccor ver3.1"で置き換えて
mes "Hot soup proseccor ver3.1"
と解釈されますし、
#define mes3(%1) mes %1 %c mes %1 %c mes %1
mes3 "Hot soup proseccor ver3.1"
なら
mes "Hot soup proseccor ver3.1"
mes "Hot soup proseccor ver3.1"
mes "Hot soup proseccor ver3.1"
と解釈されます。
もし軽量化を望むなら、
似たような処理 → #deffuncや#defcfunc、ループやサブルーチンでまとめる
頻出する定数・文字列 → 変数に置き換える
と良いと思います。