Файл #include
сообщает компилятору, как выглядит функция, в каком виде она возвращает, сколько параметров каких типов она принимает, но не сообщает компилятору о содержимом.
Флаг -lm
включает ту математическую библиотеку, которая содержит код для вызываемых функций.
Он работает так же, как printf()
, fread()
и другие стандартные функции.Когда вы включаете stdio.h
, на самом деле вы включаете не код функции, а определения.Поскольку библиотека C неявно связана, и вам ничего не нужно делать, вы этого не замечаете.