私は最近、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 フラグで機能するのか、それなしでは機能しないのか、私は本当に興味があります.これは機能すると思いますか?