0

これは未定のパラメーターを持つ関数ポインターの質問に似ていますが、試してみるとコンパイルエラーが発生します:

エラー: 関数 'accessVariant' への引数が多すぎます

エラー: void 値が無視されないはずです

これを C ファイルの先頭で定義します。

typedef void (*callBackHandler)(void*);
callBackHandler accessVariant= NULL;

私はコールバック登録機能を持っています:

void registerCallbackHandler(callBackHandler ptr_reg_callback)
{
    if (ptr_reg_callback == NULL)
    {
        return;
    }
    else
    {
        accessVariant = ptr_reg_callback;
    }
}

コード内でブール値をチェックし、特定のタイプのアクセス関数を登録します。

if (bool)
{
    registerCallbackHandler((callBackHandler)aRead16);
}
else
{
    registerCallbackHandler((callBackHandler)aRead32);
}

aRead16 と aRead32 はそれぞれ、異なる種類の引数を取ります。

それから私は電話をかけます: (*accessVariant)( (void*)arg1,(void*) arg2, (void*)&value )

4

1 に答える 1