LINUX.ORG.RU

im_newbie.c


0

0

#include <stdio.h> #include <math.h>

int main() { double x = 3.14; printf("%f",sin(x)); return 0; }

Пытаюсь компилировать: "gcc im_newbie.c". Вижу: /tmp/ccuyrgQQ.o(.text+0x39): In function `main': : undefined reference to `sin' collect2: ld returned 1 exit status

В чем причина? сравнил /usr/include/math.h с аналогичным в VS.NET 2003. В последнем присутствовали объявления всех тригонометрических и пр. функций. В первом - ни одной. Подскажите в чем дело :) Может я ключи для компилера не так выставил? :)

anonymous

В линуксе тригонометрические функции определяются через макросы (во включаемом из math.h файле bits/mathcalls.h), поэтому их прототипов и нет в самом math.h. А при компиляции программ с включаемым math.h линковщику адо указывать ключ -lm, т.е. в твоем случае

gcc im_newbie.c -lm

Кроме того, число pi уже определено в math.h как M_PI и M_PIl (для использования с double и long double соответственно), это так, к слову.

octy ★★
()
Ответ на: комментарий от octy

пасиб :)) прям чуял, что дело в ключах... единственная вещь, которую поленился поковырять..

про M_PI[I]/i i=1,2,4: обижаете, сударь :)) я разные версии math.h буквально проштудировал :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.