这是C ++问题的新手。我正在尝试使用FFTW将FFT应用于复杂的1D数据。
# include <stdlib.h>
# include <stdio.h>
# include <time.h>
#include <fftw3.h>
int main(void)
{
int i;
int N=100;
fftw_complex *in;
fftw_complex *out;
fftw_plan plan_forward;
unsigned int seed = 123456789;
in= (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*N);
out= (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*N);
srand ( seed );
for ( i = 0; i < N; i++ )
{
in[i][0] = rand ( );
in[i][1] = rand ( );
}
plan_forward = fftw_plan_dft_1d ( N, in, out, FFTW_FORWARD, FFTW_ESTIMATE );
fftw_execute ( plan_forward );
for ( i = 0; i < N; i++ )
{
printf ( " %3d %12f %12f\n", i, out[i][0], out[i][1] );
}
fftw_destroy_plan ( plan_forward );
fftw_free ( in );
fftw_free ( out );
return;
}
编译后我收到此错误:
错误:返回语句没有值,函数返回'int'[-fpermissive] 返回;
我不知道如何修复此错误。任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
应该是
int N=100;
(请注意;
代替,
)
ffftw_malloc
应该是fftw_malloc
(开头时删除了一个f
。)
此外,编译器应该给你错误的行号,我建议你去那些行并仔细检查它们,这样你就可以学会自己调试;)
最后,main
返回一个int,因此return语句需要一个值。 (0
应该没问题。)注意: main
函数的特殊之处在于它最后有一个隐式return 0;
,所以它是唯一的函数具有返回值,允许您“脱离结束”。但是如果你在main
中使用return语句,你必须提供一个值。
答案 1 :(得分:1)
错误信息几乎是不言自明的 - 您需要更改:
return;
为:
return 0;
原因是main
会返回int
,因此您需要一个值,即您无法返回&#34;没有&#34;。