2つの異なる.cファイルに2つの同一のグローバル変数があり、externとして宣言されていません。だから、各.cファイルは自分自身の変数を見たはずですか?同じ名前とタイプの2つの変数、2つの異なる.cファイル、gccでコンパイル
しかし、1つのファイルが他のファイル変数を読み込んでいるかのように(実際にそれらをリンクした後のように)、私は本当に奇妙な動作をしています。両方の変数定義に 'static'修飾子を追加すると、この問題が修正されたようです。
私が実際に思っているのは、静的な修飾子がないと正確に何が起こったのでしょうか?
も参照してくださいhttp://stackoverflow.com/questions/1490693/externリンケージのトリッキーな側面のためのc99-and-linkingの仮定義。 –
@Pascalあなたの答えは実際には最も完成した、あまりにも悪い私は受け入れられたものとしてそれをフラグすることはできません。私はあなたが 'nm 'で行ったことに似た何かをやって自分自身を考えました。この状況について私の頭に浮かぶのは、それが標準の大きな欠陥であるということだけです。ここでもhttp://www.jetcafe.org/jim/c-style.html#need_externについて話しています。コンパイラが 'extern'修飾子を前提としていればいいと思っていたのですか?そのような愚かな前提を作るのは、地獄ではないと確信しています。 – johndoevodka