试图编译fftw时返回错误

Return error while trying to compile fftw

本文关键字:返回 错误 fftw 编译      更新时间:2023-10-16

这是一个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  %12fn", i, out[i][0], out[i][1] );
   }
        fftw_destroy_plan ( plan_forward );
        fftw_free ( in );
        fftw_free ( out );
         return;
   }

编译后,我得到这个错误:

错误:return语句没有值,函数返回' int ' [-fpermissive]返回;

我不知道如何修复这个错误。任何帮助都会很感激。谢谢。

应该是

int N=100;

(注意;代替,)

ffftw_malloc应该是fftw_malloc(一开始去掉一个f)。

此外,编译器可能会给你错误的行号,我建议去那些行仔细检查,这样你就可以学会自己调试;)

最后,main返回int,因此返回语句需要一个值。(0应该是好的)注意: main函数是特殊的,因为它在末尾有一个隐式的return 0;,所以它是唯一一个允许"结束"的返回值的函数。但是如果在main中使用return语句,则必须提供一个值。

错误信息是不言自明的-您需要更改:

return;

:

return 0;

这样做的原因是main返回一个int,所以你需要一个值在这里,也就是说,你不能只是返回"nothing"