ページ 11

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

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

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

Posted: 2017年5月11日(木) 13:23
by かずま
「もう不要」とか「もはや」とか言われても、「関数の宣言」にextern
を書いても、書かなくても、どちらでもよいのは、最初からの仕様です。

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

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

Posted: 2017年5月14日(日) 10:54
by かずま
質問の意味を誤解して回答してしまったかもしれません。

質問の「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(++)言語という曖昧な表記ではなく、
具体的なコードで、質問してもらいたかったと思います。