※ ChatGPTを利用し、要約された質問です(原文:マクロを書き換えたい。)
マクロ書き換え方法を教えてください
このQ&Aのポイント
プログラムの保守の請け負いをしている私は、マクロの書き換え方法について悩んでいます。
特定のマクロを書き換える必要があるのですが、具体的な方法がわかりません。
Fooクラスのセット処理を見やすくするために、マクロを改変したいです。
こんにちは。
プログラムの保守の請け負いをしています。
#define _SET( __z, __a, __b, __c ) \
{ \
Foo foo ;\
\
lpFoo.SetParamA( __a ) ; \
lpFoo.SetParamB( __b ) ; \
lpFoo.SetParamC( __c ) ; \
\
__z <<<<=== foo ; \
}
上記のようなマクロ(説明の便宜上いろいろ省いています)がありまして、
Hoge hoge ;
_SET( hoge, 1, 2, 3 ) ;
のような使い方をしています。
「<<<<===」ですが、これはHogeクラスが持っている演算子です。Fooクラスをセットするというものです。
なんか見づらいので下記のように書き換えて欲しいと言われたのですが、どう書き換えていいものかわかりません。
hoge <<<<=== _SET( hoge, 1, 2, 3 ) ;
マクロの知識がイマイチでして、書き換え可能なのかがわかりません。
個人的にはFooクラスのコンストラクタを拡張して、
#define _SET( __z, __a, __b, __c ) Foo( data0, data1, __a, __b, __c )
くらいにしか思いつかなかったのですが、Fooクラスはいじりたくないそうです。
ご存じの方がいらっしゃいましたら教えていただけないでしょうか。
お礼
早々のご返答ありがとうございます。 説明するため簡略化したつもりが返って良くなかったようです。申し訳ありません。 「関数にする」というのは気がつきませんでした。 早速試してみます。ありがとうございました。