: 내가 함수 포인터를 배우고경고 또는 오류없이 함수 포인터가 작동하는 이유는 무엇입니까? 이 호출 알면
error: too few arguments to function ‘pow’
및 작업 아래에이 코드를 볼 때 놀랄있어 :
pow(4);
이 오류 메시지를 생성합니다. 하지만 왜? 하여 컴파일
#include<stdio.h>
#include<math.h>
void aux(double (*function)(), double n, double x);
int main(void)
{
aux(pow, 4, 2);
aux(sqrt, 4, 0);
return 0;
}
void aux(double (*function)(double), double n, double x)
{
if(x == 0)
printf("\nsqrt(%.2f, %.2f): %f\n", n, x, (*function)(n));
else
printf("\npow(%.2f, %.2f): %f\n", n, x, (*function)(n));
}
I는 :
gcc -Wall -Wextra -pedantic -Wconversion -o test test.c -lm
결과는 다음
pow(4.00, 2.00): 16.000000
sqrt(4.00, 0.00): 2.000000
I는 3 aux
의 제 호의 세번째 파라미터를 변경하는 경우, 결과의 변화 :
pow(4.00, 3.00): 64.000000
sqrt(4.00, 0.00): 2.000000
그리고 또 하나의 질문. 이 경우 함수에 대한 포인터를 선언하고 사용하는 올바른 방법은 무엇입니까?
@SouravGhosh : 그건 문제가 아닙니다. 누락 된'-lm'은 링커 오류를 유발합니다. –
@KeithThompson 맞아. 내 잘못이야. –
@SouravGhosh 사과 할 필요가 없습니다. 단지 부정확하고 산만 한 의견을 삭제하고 계속하십시오. –