LINUX.ORG.RU

Помогите начинающему


0

0

Вопрос конечно смешной, по сравению с тем, что представлено на форуме, но тем не менее, думаю, что это поможет сэкономить мне кучу времени. Только начинаю программировать на с/с++ под linux. Столкнулся с проблемой использования директивы #include. При использовании kdevelop пробовал указывать путь к /usr/include в настройках проекта - не работает. Пробовал и через консоль, вызывая gcc c параметром -I/usr/include, все равно - "undefined refernce to 'sin'".
Прога элементарная:

#include <stdio.h>
#include <math.h>
int main(int arc, char* argv[])
{
puts("Result:");
printf("%f", sin(3.14));
return 0;
}
Если не использовать, ничего кроме stdio, тогда компилится, в противном случае не фига не работает. Помогите пожалуйста.

anonymous

В качестве числа Пи лучше использовать константу M_PI из того же <math.h>

eXire ★★
()

Про -lm уже сказали, про M_PI тоже сказали. А вот про печать переменной типа double по %f, а не %lf почему-то забыли.

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

> А вот про печать переменной типа double по %f, а не %lf почему-то забыли.

может быть так задумано автором?

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

Извинте, некорректный пример привел. <math.h> - частный случай. Скажем, что бы следовало делать, если бы все выглядело так: #include <stdio.h> #include <pwd.h> int main(int arc, char* argv[]) { passwd* ppw = getpwnam("user1"); return 0; }

Компиллер кричит,что 'passwd' undeclared (first use in this function). Причем структура passwd определена в подключаемом файле. Попытка скопировать ее в текст программы перед функцией main приводит к тому, что выдается сообщение, что данный тип уже определен. Почему в первом случае выдается ошибка?

anonymous
()
Ответ на: комментарий от dilmah

Спасибо, как использовать функции стандартных библиотек C, я вобщем-то знаю, просто для данного вопроса параметры printf, с моей точки зрения, не являются существенными.

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

> Компиллер кричит,что 'passwd' undeclared

> passwd* ppw = ...

Си отличается от Си++

Если у тебя определена struct passwd, то ее нужно использовать явно указывая слово struct:

struct passwd *pwd = ...

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

Блин, во истину тупая ошибка, совсем забыл про такое. Спасибо большое.

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