加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

传递变量而不是常量时未定义引用`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函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读