在C中包含文件

时间:2012-02-22 17:05:17

标签: c include math.h

我想制作一个涉及sqrt()floor()pow()的简单函数。所以,我加入了<math.h>。当我尝试使用我的功能时,我的程序会说sqrt()floor()不存在。我已经三重检查了我的文件并重写了它们,但它仍然给出了同样的错误。只是为了检查<math.h>目录是否有任何问题,我创建了另一个单独的文件来计算相同的东西并且它有效。我现在很无能为力。我做错了什么?

无效计划的代码:

#include <math.h>
#include "sumofsquares.h"

int sumofsquares(int x){
   int counter = 0;
   int temp = x;

   while(temp != 0){
      temp = temp - (int)pow(floor(sqrt(temp)), 2);
      counter ++;
   }
    return counter;
}

工作测试文件:

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

int main(void){
   printf("%d", (int)pow(floor(sqrt(3)), 2));
}

错误就是这个

  

/tmp/ccm0CMTL.o:在函数sumofsquares'中:   /home/cs136/cs136Assignments/a04/sumofsquares.c:9:undefined reference   to sqrt'/home/cs136/cs136Assignments/a04/sumofsquares.c:9:undefined   对楼层'collect2:ld的引用返回1退出状态`

我在虚拟Ubuntu OS上使用runC来编译

1 个答案:

答案 0 :(得分:8)

您可能错过了-lm的{​​{1}}参数,这是连接数学库所必需的。尝试:

gcc

至少有两个与您的问题相关的C常见问题解答: