我正在用C編寫一個使用函數指針數組的程序。如果我不包含一個參數,我可以用我的代碼調用函數而不會出現問題。將參數傳遞給函數指針數組
int (*functionsArray[2][3])() = {
{functionOne,functionTwo,functionThree},
{functionFour,functionFive,functionSix}
};
然而,當我試圖傳遞參數int x
:
int (*functionsArray[2][3])(int x) = {
{functionOne,functionTwo,functionThree},
{functionFour,functionFive,functionSix}
};
我得到一個錯誤:
invalid conversion from 'int (*)()' to 'int (*)(int)'
還沒有這些函數返回一個int,我不應該能夠宣佈它們是無效的?
void(*functionsArray[2][3])(int x) = {
{functionOne,functionTwo,functionThree},
{functionFour,functionFive,functionSix}
};
嘗試這將導致一個錯誤:
error: invalid conversion from 'int (*)()' to 'void (*)(int)'
感謝。
向我們展示至少'functionOne'並告訴我們在哪條線上出現錯誤。 – 2014-10-06 06:45:28
'functionOne','functionTwo',...應該有完全相同的原型。原型應該與您用於陣列的原型相同。 – j123b567 2014-10-06 06:53:16
你有沒有嘗試重新組織括號,也許像(void(* functionsArray(int x)))[2] [3])= ...。其次,更重要的是,我強烈建議爲函數指針創建一個typedef,所以用法可以是直接的固件數組聲明。 – racraman 2014-10-06 06:56:40