Return 尝试编译 fftw 时出错

Return error while trying to compile fftw

C++新手问题。我正在尝试使用 FFTW 将 FFT 应用于复杂的一维数据。

 # 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;
   }

编译后出现此错误:

错误:return-没有值的语句,在函数 returning ‘int’ [-fpermissive] 中 return;

我不知道如何解决这个错误。任何帮助,将不胜感激。谢谢

应该是

int N=100;

(注意用 ; 代替 ,

ffftw_malloc大概应该是fftw_malloc(开头去掉了一个f)。

此外,编译器可能会为您提供错误的行号,我建议您转到这些行并仔细检查它们,这样您就可以学会自己进行调试 ;)

最后,main return 是一个整数,所以 return 语句需要一个值。 (0 应该没问题。) 注: main 函数的特殊之处在于它在末尾隐含了一个 return 0; ,所以它是唯一具有 return 值的函数,您可以在其中 "fall off the end"。但是,如果您在 main 中使用 return 语句,则必须提供一个值。

错误消息几乎不言自明 - 您需要更改:

return;

至:

return 0;

原因是 main return 是一个 int,所以你需要一个值,即你不能只是 return "nothing".