【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は謹んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.19269

動的に作成した関数名で関数を呼び出したい
投稿者---riko(2005/01/17 13:06:03)


プログラム中で次に呼び出す関数名を動的に作成し、
それを呼び出したいのですが、どのように行なえばいいのか
思いつきません。

どなたか御存知の方がいらっしゃいましたら
お教え下さい。
(JavaでいうClass.forNameのようなイメージです。)

#include    <stdio.h>
#include    <memory.h>
#include    <string.h>

int SubA ( char *no )
{
    char name[64];

    /*** 起動する関数名の作成 ***/
    memset( name, 0x00, sizeof( name ) );
    strcat( name, "TDXproc" );
    strcat( name, no );

    /*** 作成した名前の関数を起動する ***/
    /*** ... 方法が分からない ***/
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:動的に作成した関数名で関数を呼び出したい 19271 nop 2005/01/17 13:14:00


No.19271

Re:動的に作成した関数名で関数を呼び出したい
投稿者---nop(2005/01/17 13:14:00)


>プログラム中で次に呼び出す関数名を動的に作成し、
>それを呼び出したいのですが、どのように行なえばいいのか
>思いつきません。

C では、名前から直接関数を呼び出す事は出来ません。

やるとするならば、

1.関数名と関数ポインタを対としたテーブルを作成
2.関数名でテーブルを検索
3.見つかった位置の関数ポインタにて関数コール

と言う手順しかないでしょう。
なお、条件として関数の戻り値・仮引数が全て一致している必要があります。


この投稿にコメントする

削除パスワード

No.19273

Re:動的に作成した関数名で関数を呼び出したい
投稿者---riko(2005/01/17 13:21:19)


御回答ありがとうございます。

>C では、名前から直接関数を呼び出す事は出来ません。

やはりそうですか…。

>やるとするならば、
>
>1.関数名と関数ポインタを対としたテーブルを作成
>2.関数名でテーブルを検索
>3.見つかった位置の関数ポインタにて関数コール
>
>と言う手順しかないでしょう。
>なお、条件として関数の戻り値・仮引数が全て一致している必要があります。

関数ポインタにて関数コールというのが
よく分かりません。
コールされる側の関数名に"*"がついているという
ことでしょうか??

ぜひ、もう少しお教え戴けないでしょうか。


この投稿にコメントする

削除パスワード

No.19274

Re:動的に作成した関数名で関数を呼び出したい
投稿者---nop(2005/01/17 13:26:50)


>関数ポインタにて関数コールというのが
>よく分かりません。

まず、関数ポインタについて勉強して下さい。


この投稿にコメントする

削除パスワード

No.19278

Re:動的に作成した関数名で関数を呼び出したい
投稿者---riko(2005/01/17 14:13:03)


>>関数ポインタにて関数コールというのが
>>よく分かりません。
>
>まず、関数ポインタについて勉強して下さい。

御教授ありがとうございました。
サンプルプログラムで動作させることができました。
実務レベルへの実装方法を検討したいと思います。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧