[1047] Re:externと「外部結合」
投稿者:774RR
2007/09/01 22:50:45
> そもそもリンケージが翻訳単位外に及ぶ(つまり外部結合)、というのと、
> 宣言が定義を探しに行く範囲が翻訳単位外に及ぶ(extern宣言)、というのは
> 分けて考えるべきだと思うのですが、皆様のご意見はいかがでしょうか?
この文章の意味が俺には解釈が難しいんだけど、つまるところ規格書が主張してるのは
・extern があれば外部結合になる (6.2.2)
・extern があっても外部結合であるとは限らない(6.2.2)
・extern があれば外部定義にならない(6.7+6.9.2)
・extern があっても外部定義になりうる場合がある(6.9.2)
・プログラム全体の中で現れる、外部結合をもつ同一識別子は、
そのすべての宣言において、同じものを表す (6.2.2)
ということ。それ以上でも以下でもなくて、勝手に行間を読んではいけない。
extern 宣言なんて用語は言語規格書には無いわけで、あえて言うなら
「宣言に extern 指定子がある場合」と呼ぶべき。そして、解釈すべきは
「その宣言が同時に定義になるか否か」「その宣言の持つ結合は何か」
だけ。余計なことを考えずに素直に規格書通りにプログラムを読むだけでいい。
俺俺用語を勝手に作ってはいかん。