ページ 1 / 1
質問です
Posted: 2014年8月26日(火) 07:52
by yy
質問です。下のソースなんですが、「ptr2 = func」の所でコンパイルエラーが発生します。でも、参考書ではコンパイルが成功しているんです。なぜでしょうか?
コード:
#include<string.h>
#include<stdlib.h>
int func(int);
int main()
{
int (*ptr1)(), (*ptr2)();
ptr1 = main;
ptr2 = func;
printf("main関数のアドレス = %p, ptr1 = %p\n", main, ptr1);
printf("func関数のアドレス = %p, ptr2 = %p\n", func, ptr2);
return 0;
}
int func(int x)
{
printf("x = %d\n", x);
return 0;
}
Re: 質問です
Posted: 2014年8月26日(火) 08:12
by みけCAT
参考書ではC言語としてコンパイルしているコードを、C++としてコンパイルしていませんか?
C言語では関数の宣言時に引数を省略すると「引数がいくつあってもよい」とみなされ、
C++では関数の宣言時に引数を省略するとvoidとみなされる、
という仕様があるそうです。(
http://www.6809.net/tenk/html/cgokai/fncarg.htm)
Re: 質問です
Posted: 2014年8月26日(火) 08:14
by yy
このソースですが、環境を変えたら普通に出来ましたので、失敗した方の環境のマニュアルを読んで見ます。
無駄な時間を使わせてしまってすみませんでした。考えてくださった方有難うございました。
Re: 質問です
Posted: 2014年8月26日(火) 08:17
by yy
>みなCATさん
CとC++にそんな違いがあるとは知りませんでした。多分その可能性もあると思いますのでみてみます。ご解答有難うございます。