C言語なら俺に聞け! Part 75
■ このスレッドは過去ログ倉庫に格納されています
0680672
NGNG× int ((*foo(void))(void))
○ int (*(*foo(void))(void))
でした、すみません。
>>675
ちなみに上の書き方はなんかおかしいですね。
確かに、 int *(*foo(void))(void) のほうが正しそうです
(厳密にはどうなのか分からないところが悲しい・・・調べます。
・・・でも自分のは間違ってないか?動いてたけど)。
しかし 675 のをコンパイルしても、同じエラーが出ます。
「式は引数リストのない関数に対して評価します」って warning は
「関数実行しようとしてんのに、引数がねぇんだよ!!」
ってことだと思うので、(とかいいながら実行すると関数のアドレスを返してくれるから謎)
「ちがうよ、関数のアドレスを返してるだけなんだよ」
っていうキャストが必要なんじゃないかと思うのですが、
考えてみると、foo 関数の宣言から明確にそのことが分かるから・・・
つまり自分の認識が間違ってる?それともコ(ry
>>673
多重定義になるのでは?というか多分良く分かってません。どういうことでしょう?
void* にキャストするのは非常に嫌なのですが、
ぐぐったらそれっぽい記述があったのでしてみました
(スレ違いですが、VC6に関してはOKなのかな)。
個人的にはこっちのほうが warning じゃない?と思ってしまいます。
■ このスレッドは過去ログ倉庫に格納されています