Я пытаюсь использовать функцию sinf
в моей программе C, но это дает мне неопределенную ошибку ссылки в MSVC 6.0, однако sin
работает отлично.
Это заставляет меня любопытно найти разницу между sin
и sinf
.
Какова логическая разница между sin
и sinf
?
Как я могу реализовать свою собственную функциональность sinf
?
sin
принимает double и возвращает double – sinf
принимает float и возвращает float.
Другими словами, sin
– двойная точность, а sinf
– одинарная точность.
Если вы используете старый компилятор, который не имеет sinf, вы можете реализовать его как:
#define sinf(x) (float)sin((double)(x))
sin принимает double и возвращает double и определяется ANSI C. sinf не является.
sinf()
был добавлен в C на C99, который Microsoft Visual C ++ не полностью поддерживает (даже при этом Visual C ++ 6 был выпущен до стандартизации C99).
Вы можете использовать функцию sin()
, которая принимает double
( sinf()
принимает float
).