あなたが示したコードはほぼ正しいです。問題は関数宣言にあります:
myValueType function1(myParam){}
myValueType function2(myParam){}
これらは古いスタイルの K&R 非プロトタイプ宣言です。パラメーターの名前は でmyParam
、型は指定されていません。おそらくあなたはこれを意味しましたか?
myValueType function1(myParamType myParam){}
myValueType function2(myParamType myParam){}
コードを最小限のコンパイル可能な例に拡張します。
typedef int myValueType, myParamType;
enum { CONSTANT_STATE1, CONSTANT_STATE2 };
myValueType function1(myParamType myParam){}
myValueType function2(myParamType myParam){}
void f(myParamType myParam)
{
myValueType myValue;
myValueType (*myArray[2])(myParamType);
myArray[CONSTANT_STATE1] = &function1;
myArray[CONSTANT_STATE2] = &function2;
myValue = (*myArray[CONSTANT_STATE1])(myParam);
}