1

これはファイル「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

4

1 に答える 1