2013-03-27 90 views
0

請解釋我錯在哪裏。我想在指向函數的指針之間切換幾個編碼工具。我宣佈它像Visual Studio 2012中的函數指針

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樣品,INT in_coding,g72x_state * state_ptr)」 的值不能分配給類型的實體 「INT(*)()」

感謝您的幫助(如果任何)!

+0

您是否將其編譯爲C++?單詞「實體」在C詞彙中並不常見。 – 2013-03-27 08:31:07

+0

應該是CI假設,因爲我的所有文件在.c中都不是.cpp – Cecil 2013-03-27 08:51:44

回答

2

您需要聲明函數指針的參數。您不能聲明它不帶參數,並將其設置爲等於需要3個參數的函數。我很震驚它在linux上工作。

+0

是的,第一行需要是'int(* enc_routine)(int,int,struct g72x_state *);' – 2013-03-27 07:34:12

+1

「聲明它不帶任何參數,並將其設置爲等於需要3個參數的函數「在C99中,不聲明不帶參數,並且您可以將其設置爲等於需要3個參數的函數。 – 2013-03-27 08:33:22

+0

哦!謝謝Gabe,Binary和Pascal! – Cecil 2013-03-27 08:34:23