3

私は最近、debian テストをアップグレードして gcc 6.2.1 コンパイラを入手した後、コードの一部をコンパイルする際に問題に遭遇しました。私はそれをこの簡単な例に要約しました:

inline int func(void) {
    return 0;
}

int main (int argc, char **argv) {
    func();
}

このコードは、次のコードではコンパイルされません。

gcc -o exec code.c # gcc 6.2.1

次のエラーで失敗します。

undefined reference to 'func'

また、同じホストで gcc 4.8、4.9、および 5 を試して失敗しました。追加するとコンパイルされます:

gcc -o exec code.c -O2 # gcc 6.2.1

なぜそれが -O2 フラグで機能するのか、それなしでは機能しないのか、私は本当に興味があります.これは機能すると思いますか?

4

1 に答える 1