我是C编程的新手,我有一个其他人编写的代码,我只需要让它工作或编译它。
# include <stdio.h>
# include <math.h>
# define AP_INC 1
# define H_INC 4
/* plot the power spectrum */
do_peak(ftdat,n_out,recno)
struct cmplx *ftdat;
int n_out;
int recno;
{
extern float del_f;
extern float del_t;
extern FILE *pkfile;
extern int ilowpk;
extern int ihipk;
float time;
float fpeak;
float pkval;
int ipeak;
int i;
/* find the peak of the spectrum */
pkval = ftdat[ilowpk];
ipeak = ilowpk;
if(ilowpk < ihipk){
for(i = ilowpk+1; i < ihipk; i++){
if(ftdat[i] > pkval){
pkval = ftdat[i];
ipeak = i;
}
}
} else {
for(i = ilowpk+1; i < n_out; i++){
if(ftdat[i] > pkval){
pkval = ftdat[i];
ipeak = i;
}
}
for(i = 0; i < ihipk; i++){
if(ftdat[i] > pkval){
pkval = ftdat[i];
ipeak = i;
}
}
}
/* convert ipeak to a frequency */
fpeak = (float)ipeak*del_f;
/* compute the time */
time = (float) recno*del_t;
/* write to output file */
fprintf(pkfile,"%f %g\n",time,fpeak);
return;
}
我得到的错误是“无效使用未定义类型'struct cmplx'取消引用指向不完整类型的指针” 您可以查看此链接以获取更多信息http://codepad.org/HdbgppgM 请让我知道如何解决它。 请记住,我不知道C,但只有matlab。 谢谢 阿尼尔。
答案 0 :(得分:0)
pkval = ftdat [ilowpk]; &lt; - 在这里,您将ftdat视为指向 struct cmplx 数组的指针(类似于char *通常是一个字符数组),在一个 struct cmplx 中提取一个定位ilowpk并将其分配给pkval。
您无法从数组中提取结构,因为所有编译器都具有前向声明 - 它不知道结构有多大。因此,它甚至不知道与数组的开头有关的位置。