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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
imagine
記事: 7
登録日時: 10年前

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

#1

投稿記事 by imagine » 9年前

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で作りたいのですが。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 9年前

ソースコードを提示する際は、は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;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

imagine
記事: 7
登録日時: 10年前

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

#3

投稿記事 by imagine » 9年前

ありがとうございました。 ##演算子で解決し、ソースもすっきりしました。

閉鎖

“C言語何でも質問掲示板” へ戻る