私は引数として関数ポインタをとるC関数を持っています。これはプログラムの最後に呼び出すデストラクタです。ここに私の関数のプロトタイプがあります:C:関数ポインタとtypedef問題
int store_dest(void (*routine)(void *));
私はこの関数ポインタを他の情報とともに構造体に格納します。良い構造体を得るために、私はこの関数ポインタにtypedefを持たせたいと思います。ここに私のtypedefがある:
typedef void (*my_destructor)(void *);
そして、ここでは私の構造体である:
typedef struct my_struct{
my_destructor dest;
other_info ...
} my_struct;
初期化ステップの間に、私は私の機能に「DEST」フィールドを設定したい、ここでのプロトタイプはこの機能:私は「my_dummy_dest」に私の構造の「DEST」フィールドを設定しようとすると、
void* my_dummy_dest(void* foo);
問題は(実際には単なる警告ですが、私はそれを抑制したいと思います)が発生します
0123私はちょうどそれらを比較するとき同じ:「互換性のないポインタ型から割り当て警告」:私は「警告を取得
if (my_struct.dest == &my_dummy_dest)
:明確なポインタ型の比較をキャストを欠い
my_struct.dest = &my_dummy_dest;
は私が取得します"
しかし、" dest "フィールドを別のルーチンで設定しても警告は表示されません。なぜ私はそれらの警告があるのか分からない。
oupsである必要があります。私はそれが愚かなものだったことを知っていました。とにかく感謝します:) – claf