Включая файлы в C - PullRequest
       17

Включая файлы в C

0 голосов
/ 22 февраля 2012

Я хочу сделать простую функцию, включающую 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: неопределенная ссылка в sqrt '/home/cs136/cs136Assignments/a04/sumofsquares.c:9: не определено ссылка на пол 'collect2: ld вернул 1 статус выхода`

Я использую runC на виртуальной ОС Ubuntu для компиляции

1 Ответ

8 голосов
/ 22 февраля 2012

Возможно, вам не хватает аргумента -lm для gcc, необходимого для связи математической библиотеки. Попробуйте:

gcc ... <stuff> ... -lm

Существует не менее двух часто задаваемых вопросов по C, относящихся к вашей проблеме:

...