0

どこが間違っているのか説明してください。関数へのポインタを使用して、いくつかのエンコーディングユーティリティを切り替えたい。私はそれを次のように宣言します

int (*enc_routine)();

後で私は次のようなコーディングユーティリティを切り替えます

enc_routine = g723_24_encoder;

ユーティリティ自体は次のようなものです

extern int g723_24_encoder(
    int sample,
    int in_coding,
    struct g72x_state *state_ptr);

Linuxではすべてがかわいくて問題ありませんでしたが、現在はVisual Studio 2012を使用しており、次のように表示されます。

タイプ「int(*)(int sample、int in_coding、g72x_state * state_ptr)」の値をタイプ「int(*)()」のエンティティに割り当てることはできません。

(もしあれば)助けてくれてありがとう!

4

1 に答える 1

2

関数ポインタのパラメータを宣言する必要があります。パラメーターを受け取らないように宣言して、3つのパラメーターを必要とする関数と等しくなるように設定することはできません。Linuxで動作することにショックを受けました。

于 2013-03-27T07:24:42.227 に答える