ページ 1 / 1
typedefについて
Posted: 2013年8月29日(木) 16:02
by サイクロン
typedefの使い方がわかりません。
http://www.geocities.jp/ky_webid/Progra ... t/003.html
このサイトを見ていた時に
コード:
typedef void (*cmd_func)(void);
という文がありました。
と書くと,
は
になることはわかるのですが、
これは
コード:
(*cmd_func)(void) a;
と書くと
になるということでしょうか?
絶対に違うと思うのですが、
それ以外の使い方がググっても出てきません。
どういう意味になるのか教えてください。
よろしくおねがいします。
Re: typedefについて
Posted: 2013年8月29日(木) 16:24
by Blue
関数の型宣言ですね。
コード:
typedef void (*cmd_func)(void);
は、引数なしの戻り値なしの関数の型名をcmd_funcとするように宣言しています。
一例ですが、typedefなしでやろうとすると
コード:
#include <stdio.h>
int add(int x, int y) { return x + y; }
int sub(int x, int y) { return x - y; }
int main()
{
int x = 1, y = 2, z;
int (*calc)(int, int);
calc = add;
z = (*calc)(x, y);
printf("z = %d\n", z);
calc = sub;
z = (*calc)(x, y);
printf("z = %d\n", z);
return 0;
}
の
コード:
int (*calc)(int, int);
という書き方になります。
typedefを使うと
コード:
typedef int (*CALC)(int, int);
とちょっとだけ可読性が上がったりします。
(キャストするケースもあったりしますが)
「関数ポインタ」でWeb検索してみると参考になるかもしれません。
Re: typedefについて
Posted: 2013年8月29日(木) 17:04
by サイクロン
解決しました。
Blueさんありがとうございました。