質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yy

質問です

#1

投稿記事 by yy » 11年前

質問です。下のソースなんですが、「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;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 質問です

#2

投稿記事 by みけCAT » 11年前

参考書ではC言語としてコンパイルしているコードを、C++としてコンパイルしていませんか?
C言語では関数の宣言時に引数を省略すると「引数がいくつあってもよい」とみなされ、
C++では関数の宣言時に引数を省略するとvoidとみなされる、
という仕様があるそうです。(http://www.6809.net/tenk/html/cgokai/fncarg.htm)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

yy

Re: 質問です

#3

投稿記事 by yy » 11年前

このソースですが、環境を変えたら普通に出来ましたので、失敗した方の環境のマニュアルを読んで見ます。
無駄な時間を使わせてしまってすみませんでした。考えてくださった方有難うございました。

yy

Re: 質問です

#4

投稿記事 by yy » 11年前

>みなCATさん
CとC++にそんな違いがあるとは知りませんでした。多分その可能性もあると思いますのでみてみます。ご解答有難うございます。

閉鎖

“C言語何でも質問掲示板” へ戻る