Dlaczego tak
Komunikat „undefined reference” zgłasza konsolidator (linker), który łączy pliki obiektowe w plik wykonywalny i nie znajduje w żadnym z nich kodu funkcji oblicz(int). Kompilacja się powiodła, bo deklaracja funkcji wystarcza kompilatorowi do sprawdzenia wywołania — brakuje definicji albo pliku z nią w poleceniu budowania. Brak nagłówka lub średnika zatrzymałby już kompilację, a błąd wykonania nie mógłby wystąpić przed utworzeniem pliku.