解決済みの質問
typedef void (xxx)(void) typedef xxx * (call)(void)
typedef void (xxx)(void)
typedef xxx * (call)(void)
void (* start(void))(void)
{
return (xxx*)start_1;
}
void (* start_2(void))(void)
{
return (xxx*)start_2;
}
C言語です
上記ってどういうことがしたいのですか?
特にtypedefのところ。
callって??
プログラムの一部なので、推測してください。
-
- 質問日時:
- 2009/10/17 20:09:50
-
- 解決日時:
- 2009/10/19 23:12:49
-
- 回答数:
- 2
-
- お礼:
- 知恵コイン
- 500枚
-
- 閲覧数:
- 588
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
miegumさん
typedef は型に別名を与えるものです。
typedef int HOGE;
とした場合、
int aaa;
HOGE bbb;
は同じ意味になります。
さて、質問の内容ですが。
typedef void (xxx)(void)
これは、戻り値にvoid型、引数にvoid型を持つ関数型にxxxという別名を与えています。
typedef xxx * (call)(void)
これは、xxx型のポインタ型にcallという別名を与えています。
ですから、
xxx *hoge;
call foo;
という風に宣言することも出来ますし、上記の2行は同じ意味を持ちます。
また、下記のような関数があった場合。
void Function(void)
{
printf("Function!!");
}
hoge = Function;
foo = Function;
というように関数を代入することも出来ます。
ポインタを経由して代入した関数を呼び出す場合は、
(*hoge)();
(*foo)();
とします。
使い道は結構ありますよ。
- 違反報告
- 回答日時:2009/10/18 11:42:45
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
2人が役に立つと評価しています。
ベストアンサー以外の回答
(1件中1〜1件)
typedef void (xxx)(void)
引数なし、戻り値なしの関数という型をxxxとする
typedef xxx * (call)(void)
引数なし、xxxのアドレスを返す関数という型をcallとする
あとは、自身の関数のアドレスを返す関数を定義している…が、どういう使い道があるのか想像できないですね。
- 違反報告
- 回答日時:2009/10/18 00:43:34


質問した人からのコメント