通常、データ型の代替名を取得するにはtypedef
を使用します。例えば -typedef int(* pf)は説明が必要
typedef long int li; // li can be used now in place of long int
しかし、typedefの下に何をするのでしょうか?
typedef int (*pf) (int, int);
通常、データ型の代替名を取得するにはtypedef
を使用します。例えば -typedef int(* pf)は説明が必要
typedef long int li; // li can be used now in place of long int
しかし、typedefの下に何をするのでしょうか?
typedef int (*pf) (int, int);
typedef int (*pf) (int, int);
これはpf
タイプで宣言された変数は、2つのint
パラメータを受け取り、int
を返す関数へのポインタであることを意味します。言い換えれば
は、あなたがこのような何かを行うことができます。
#include <stdio.h>
typedef int (*pf)(int,int);
int addUp (int a, int b) { return a + b; }
int main(void) {
pf xyzzy = addUp;
printf ("%d\n", xyzzy (19, 23));
return 0;
}
それは関数ポインタのプロトタイプです。次に、このような引数のものとしての機能を宣言することができます。
void RegisterCallback(pf your_callback_func);
は次に、あなたのように渡された関数を呼び出すことができFUNC PTR:
...
your_callback_func(i, j);
...
typedef
は名前pf
を持っており、それがためのものです2つの整数を引数とし、整数を返す関数ポインタ。
known types
でunknown type
を定義しますよう
typedef
作品。
したがって、2つのint引数をとり、intを返す関数型を定義します。
typedef long int li;
はlong int
を入力する代替名li
を割り当てます。まったく同じ方法
typedef int (*pf) (int, int);
で
はint (*) (int, int)
を入力する代替名pf
を割り当てます。それがすべてそれにあること。
おそらく気付いたように、typedef
宣言は、変数宣言と同じ構文に従います。唯一の違いは、新しい変数名が新しいタイプ名に置き換えられることです。したがって、Cの宣言構文に従って、宣言された名前は、配列型または関数型が関係しているときに、宣言子の "中間"に現れることがあります。別の例として
typedef int A[10];
型int [10]
の代替名としてA
を宣言する。この例では、新しい名前も宣言の「中間」に表示されます。
うまく説明.. .. :) – phoenix
[cdecl](http://cdecl.org)からレスキュー! – milleniumbug
[Typedef関数ポインタの重複が可能ですか?](0120-385-301) – user93353
@milleniumbug:試しましたか?構文エラー! – MatthewD