タスクシステムについて。 – プログラミング – Home

タスクシステムについて。
 
通知
すべてクリア

[解決済] タスクシステムについて。


color
 color
(@color)
ゲスト
結合: 18年前
投稿: 8
Topic starter  

開発環境:VS2005 VC++ winXP

void StartTaskHead()
{}

struct TCB
{
void (*Exec)(TCB*); // タスクを処理する関数。
};

void InitTask()
{

// 処理関数を格納。
tmpTCB->Exec = StartTaskHead;

}

上記のように、メソッドを格納しようとすると下記のようなエラーが出てしまいます。

error C2440: '=' : 'void (__cdecl *)(void)' から 'void (__cdecl *)(TCB *)' に変
換できません。

どのようにしたらエラーがなくなりますでしょうか!?
ご教授お願い致します。


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

エラーメッセージどおり型が違います。

>StartTaskHead

・引数をとらない
・戻り値を返さない
関数です。

すなわち、
>'void (__cdecl *)(void)'


>void (*Exec)(TCB*);

・第一引数がTCB*型
・戻り値を返さない
関数型です。

すなわち、そのまま
>'void (__cdecl *)(TCB *)'
です。


返信引用
color
 color
(@color)
ゲスト
結合: 18年前
投稿: 8
Topic starter  

素早いレスありがとうございます。
Blue様のお陰で解決に至りました。

こういう事だったのですね。

void StartTaskHead(TCB* thisTCB);
{}

struct TCB
{
void (*Exec)(TCB*); // タスクを処理する関数。
};

void InitTask()
{

// 処理関数を格納。
tmpTCB->Exec = StartTaskHead;

}

上記のようにする事でエラーが出なくなりました。
ありがとう御座いました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました