- 论坛徽章:
- 0
|
问题如题,代码如下,请各位注意我注释的地方,在此感谢好心人回贴。。。:wink:
#include <stdio.h>
#include <math.h>
#define SIZE 3
typedef double (*V_FP_MTH)(double);
void transform(double *,double *,int,V_FP_MTH);
double add(double);
void print(double *,int);
int main(void)
{
extern double sin(double);---引用系统函数申明,我觉得可以不要,但是我加还是出现错误
extern double cos(double);
double source[SIZE] = {1.2,5.0,3.3};
double target[SIZE];
//transform(source,target,SIZE,sin); ------说明如果我不注释掉这几行,是可以运行的,
//print(target,SIZE); -----在这之前我都用extern申明引用了库函数,
//transform(source,target,SIZE,cos); ----但还是有错误消息提示(见下),是不是不能指
//print(target,SIZE); ----向系统的函数?
transform(source,target,SIZE,add);
print(target,SIZE);
return 0;
}
void transform(double *s,double *t,int num,V_FP_MTH fp)
{
int i;
for(i = 0;i < num;i++)
t[i] = (*fp)(s[i]);
}
void print(double *s,int num)
{
int i;
for(i = 0;i < num;i++)
printf("%lf",s[i]);
printf("\n" ;
}
double add(double x) --测试用,可以通过
{
return x+10;
}
错误提示:
In function 'main':
:undefined reference to 'sin'
collent2:ld returned 1 exit status
是不定义的函数指针不能指向系统定义的函数????,望解答,谢谢 ,希望这问题描述清楚了 |
|