C(++)言語のexternはもう不要?

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

C(++)言語のexternはもう不要?

#1

投稿記事 by 四苦八苦 » 8年前

いまMS Sisual studio2015を利用していますが、
同じprojectの中の他のソースファイルに実装している関数を利用するには
externで宣言しなくても、コンパイルがパスした事は、もはや
C(++)言語にはexternキーワードがもう廃棄されたということでしょうか?

かずま

Re: C(++)言語のexternはもう不要?

#2

投稿記事 by かずま » 8年前

「もう不要」とか「もはや」とか言われても、「関数の宣言」にextern
を書いても、書かなくても、どちらでもよいのは、最初からの仕様です。

「変数」の宣言では extern の有無で意味が異なる場合があるので、
externキーワードは廃棄できません。

かずま

Re: C(++)言語のexternはもう不要?

#3

投稿記事 by かずま » 8年前

質問の意味を誤解して回答してしまったかもしれません。

質問の「externで宣言しなくても」というのを、

コード:

extern void sub();

int main()
{
    sub();
	return 0;
}

コード:

void sub();

int main()
{
    sub();
	return 0;
}
と書いてもコンパイルできたと言っているのだと解釈していました。
これは、C でも C++ でも同じです。

ところが、C では、

コード:

int main()
{
    sub();
	return 0;
}
と書いてもコンパイルできます。C++ではできません。
そういう質問だったのでしょうか?
C(++)言語という曖昧な表記ではなく、
具体的なコードで、質問してもらいたかったと思います。

返信

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