開発環境:VS2005 VC++ winXP
void StartTaskHead()
{}
struct TCB
{
void (*Exec)(TCB*); // タスクを処理する関数。
};
void InitTask()
{
// 処理関数を格納。
tmpTCB->Exec = StartTaskHead;
}
上記のように、メソッドを格納しようとすると下記のようなエラーが出てしまいます。
error C2440: '=' : 'void (__cdecl *)(void)' から 'void (__cdecl *)(TCB *)' に変
換できません。
どのようにしたらエラーがなくなりますでしょうか!?
ご教授お願い致します。
エラーメッセージどおり型が違います。
>StartTaskHead
は
・引数をとらない
・戻り値を返さない
関数です。
すなわち、
>'void (__cdecl *)(void)'
型
で
>void (*Exec)(TCB*);
は
・第一引数がTCB*型
・戻り値を返さない
関数型です。
すなわち、そのまま
>'void (__cdecl *)(TCB *)'
です。
素早いレスありがとうございます。
Blue様のお陰で解決に至りました。
こういう事だったのですね。
void StartTaskHead(TCB* thisTCB);
{}
struct TCB
{
void (*Exec)(TCB*); // タスクを処理する関数。
};
void InitTask()
{
// 処理関数を格納。
tmpTCB->Exec = StartTaskHead;
}
上記のようにする事でエラーが出なくなりました。
ありがとう御座いました。