看了这个代码感觉就像是一个数学家在解数学题,如看天书一般,晦涩难懂,真佩服能写出这样程序的人,但写程序不是解数学题,还是要按写程序的道理来做,应该化繁为简,分步来做,而不能把几步合在一起处理,尽管是书上的程序,完全没有学习的必要,说它是一段烂代码都不为过。下面是几个错误的出处。
12CPLX0.C:46:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:47:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:48:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:49:31: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:50:31: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
源于代码
c=malloc(m*sizeof(double));
d=malloc(m*sizeof(double));
w=malloc(m*sizeof(double));
xt=malloc(n*sizeof(double));
xf=malloc(n*sizeof(double));
malloc函数应用不当,造成类型错误,应加上(double *) 如以下
c=(double *)malloc(m*sizeof(double));
12CPLX0.C:176:50: error: cannot convert 'double (*)[4]' to 'double*' for argument '8' to 'int cplx(int, int, double*, double*, double, double, double*, double*, int, void
(*)(int, int, double*, double*, double*, double*), double (*)(double*, int))'
原因
cplx函数中第8个参数double *xx 调用时传入参数不一致,至于如何去改,很不容易,或许作此程序的人能改,这也就是写程序不懂化繁为简,分步处理的恶果,出了错误不好处理,牵一发而动全身,经常有人说,写代码要本着简单的方式处理,一个函数只做一件事,一句代码只完成一个任务,我觉得这样是非常非常好的,也很容易做到。
12CPLX0.C:46:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:47:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:48:30: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:49:31: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
12CPLX0.C:50:31: error: invalid conversion from 'void*' to 'double*' [-fpermissive]
源于代码
c=malloc(m*sizeof(double));
d=malloc(m*sizeof(double));
w=malloc(m*sizeof(double));
xt=malloc(n*sizeof(double));
xf=malloc(n*sizeof(double));
malloc函数应用不当,造成类型错误,应加上(double *) 如以下
c=(double *)malloc(m*sizeof(double));
12CPLX0.C:176:50: error: cannot convert 'double (*)[4]' to 'double*' for argument '8' to 'int cplx(int, int, double*, double*, double, double, double*, double*, int, void
(*)(int, int, double*, double*, double*, double*), double (*)(double*, int))'
原因
cplx函数中第8个参数double *xx 调用时传入参数不一致,至于如何去改,很不容易,或许作此程序的人能改,这也就是写程序不懂化繁为简,分步处理的恶果,出了错误不好处理,牵一发而动全身,经常有人说,写代码要本着简单的方式处理,一个函数只做一件事,一句代码只完成一个任务,我觉得这样是非常非常好的,也很容易做到。