programing

pow() 함수를 사용하면 C에서 정의되지 않은 참조 오류가 발생합니다.

linuxpc 2023. 6. 10. 08:31
반응형

pow() 함수를 사용하면 C에서 정의되지 않은 참조 오류가 발생합니다.

다음 코드 비트가 C에서 작동하는 이유는 무엇입니까?

int res = pow(2, 3);
printf("%d\n", res);

반면에 다른 사람은 그렇지 않나요?

int a = 2;
int b = 3;

int res = pow(a, b);
printf("%d\n", res);

내가 노력해도

double a = 2;
double b = 3;

double res = pow(a, b);
printf("%f\n", res);

나는 이해합니다.

'pow'에 대한 정의되지 않은 언급

내가 뭘 잘못하고 있는 거지?

그것이 작동할 때, 그것은 계산이 컴파일러 자체에 의해 수행되었기 때문입니다(그리고 당신이 그것을 작성한 것처럼 이진법에 포함되었습니다).

printf("8\n");

그것이 작동하지 않을 때, 그것은.pow함수는 수학 라이브러리에 포함되어 있으며 수학 라이브러리는 기본적으로 이진수와 연결되어 있지 않습니다.
함수 라이브러리를 연결하려면 컴파일러가 gcc이면

gcc ... -lm ...

다른 컴파일러에서도 동일해야 합니다 :)
하지만 문서를 읽습니다.

undefined reference to 'pow'링커 오류처럼 들립니다.함수를 도입하더라도 수학 라이브러리에서 링크하지 않습니다.pow포함하여<math.h>.

gcc를 사용할 경우-lm함수 lib에서 링크할 명령줄 매개 변수입니다.

이렇게 사용

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

int main(void)
{
  for(int i = 1; i < 5; i++)
     printf("pow(3.2, %d) = %lf\n", i, pow(3.2, i));  
  return 0;
}

출력:

pow(3.2, 1) = 3.200000

'pow'에 대한 정의되지 않은 언급

임의의 숫자에 대한 검정력은 검정력과 같은 정수 값을 가져야 하기 때문입니다.

pow(x,y)
where, x must be real and y must be a whole number

언급URL : https://stackoverflow.com/questions/4174080/using-pow-function-throws-undefined-reference-error-in-c

반응형