【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

●開発環境
[OS]
Linux 2.6.9

[コンパイラ]
GCC 3.4.6

●質問
以下のプログラム中のTEST関数を、
マクロ関数(#define)にしたいのですが、
やり方がわかりません。

ご存知の方がいらっしゃいましたら、ご教授願います。

--------------------------------
#include <stdio.h>
typedef struct t_str_abc {
unsigned int x;
unsigned int y;
} str_abc;

unsigned int TEST( str_abc *kou );

void main(void)
{
str_abc kouzou;
unsigned int ret;

kouzou.x = 1;
kouzou.y = 2;

ret = TEST(&kouzou);

printf("ret = %d\n", ret);
}

unsigned int TEST( str_abc *kou )
{
unsigned int state;

state = kou->x + kou->y;

return state;
}
--------------------------------

A 回答 (1件)

目的がよく解らないが、


関数っぽく動かすなら下記の通り

#include <stdio.h>
typedef struct t_str_abc {
unsigned int x;
unsigned int y;
} str_abc;

#define TEST(arg) ((arg)->x + (arg)->y)

int main(void)
{
str_abc kouzou;
unsigned int ret;

kouzou.x = 1;
kouzou.y = 2;

ret = TEST(&kouzou);

printf("ret = %d\n", ret);
}
    • good
    • 0
この回答へのお礼

構造体のポインタを入力したら、
そのまま使えるんですね。
試してみます。ありがとうございます。

お礼日時:2009/10/01 10:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報