尝试编译fftw时返回错误

时间:2015-08-19 13:26:08

标签: c++ fftw

这是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]    返回;

我不知道如何修复此错误。任何帮助,将不胜感激。感谢。

2 个答案:

答案 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;。