ページ 11

C言語における マクロの定義

Posted: 2016年2月15日(月) 17:56
by imagine
Cにおいて 以下のような記述をしたいのですが、何か方法はありましたでしょうか?
sub()
{
int AX, sv_AX;
int BX, sv_BX;
PUSH(AX); // sv_AX = AX;
PUSH(BX); // sv_BX = BX;
func ( &AX, &BX );
POP(AX); // AX = sv_AX;
POP(BX); // BX = sv_BX;
}

PUSH(??), POP(???)はマクロです。 変数を退避/復帰する機能で、#defineで作りたいのですが。

Re: C言語における マクロの定義

Posted: 2016年2月15日(月) 22:22
by みけCAT
ソースコードを提示する際は、はBBCodeを有効にした(無効にしない)状態でBBCodeのcodeタグで囲んでいただけると、見やすくてありがたいです。
imagine さんが書きました:Cにおいて 以下のような記述をしたいのですが、何か方法はありましたでしょうか?
##演算子を使うとできるかもしれません。

コード:

#define PUSH(v) sv_##v = v
#define POP(v) v = sv_##v

sub()
{
    int  AX, sv_AX;
    int  BX, sv_BX;
    PUSH(AX);      // sv_AX = AX;
    PUSH(BX);      // sv_BX = BX;
    func ( &AX, &BX );
    POP(AX);      // AX = sv_AX;
    POP(BX);      // BX = sv_BX;
}

Re: C言語における マクロの定義

Posted: 2016年2月16日(火) 11:40
by imagine
ありがとうございました。 ##演算子で解決し、ソースもすっきりしました。