これはファイル「1.c」です
    #include <stdio.h>
    char foo;
    int bar(){
    }
    int main(){
        printf("%d",foo);
        return 0;
    }
    //--------------------------
これはファイル「2.c」です
    void foo(){
    }
として呼び出されるコンパイラgcc 1.c 2.c
上記は未定義の動作をしますか? 私の推測では、そうです。そうでなければ、最適化を行うことはほとんど不可能です。
同じエンティティに対する複数の異なる定義 (クラス、テンプレート、列挙、インライン関数、静的メンバー関数など) [C++ プログラマーが知っておくべき一般的な未定義の動作は何ですか?
しかし、私が知る限り、リンケージでvoid foo(){}によってオーバーライドできる弱いシンボルchar fooのみを生成します。さらに、 に変更しても、それはまだ定義ですか?char fooextern char foo