传递变量而不是常量时未定义引用`sin’
发布时间:2020-12-16 10:34:07 所属栏目:百科 来源:网络整理
导读:参见英文答案 Undefined reference to `sin` ????????????????????????????????????4个 我有一个在Windows中完美运行的代码但是当我尝试在linux中编译它时出现错误.我发现问题在于sin()函数. 如果我直接传递给它一个常数,它工作正常: #include stdio.h#incl
参见英文答案 >
Undefined reference to `sin` ????????????????????????????????????4个
我有一个在Windows中完美运行的代码但是当我尝试在linux中编译它时出现错误.我发现问题在于sin()函数. 如果我直接传递给它一个常数,它工作正常: #include <stdio.h> #include <math.h> int main(void) { float y = sin(1.57); printf("sin(1.57) = %f",y); return 0; } Output 1: sin(1.57) = 1.000000 但当我传递给它一个变量我得到一个错误: #include <stdio.h> #include <math.h> int main(void) { float x = 1.5; float y = sin(x); printf("sin(%f) = %f",x,y); return 0; } Output 2: /tmp/ccfFXUZS.o: In function `main': source-bcfaa9ff162b:(.text+0x1a): undefined reference to `sin' collect2: error: ld returned 1 exit status 解决方法
在某些系统上,数学函数位于一个单独的库中,需要明确链接.只需在编译(链接)程序时传递选项-lm,一切都应该有效.
第一个工作的原因是因为编译器知道sin并将整个事物优化为常量 – 它不需要实际调用sin函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |