J’ai un code qui utilise le type std::complex
. Du manuel de FFTW :
si vous avez une variable
complex *x
, vous pouvez la transmettre directement à FFTW viareinterpret_cast(x)
.
Cependant, quand je le fais dans mon code:
tmp_spectrum = reinterpret_cast<std::complex*>(fftw_alloc_complex(conf.spectrumSize())); plan_bw_temp = fftw_plan_dft_c2r_1d(conf.FFTSize(), reinterpret_cast(tmp_spectrum), tmp_out, FFTW_ESTIMATE);
dereferencing type-punned pointer might break ssortingct-aliasing rules [-Wssortingct-aliasing]
. Comment résoudre cet avertissement? Merci !
Vous avez trois options ici:
fftw_complex
quand vous en avez besoin: fftw_plan_dft_c2r_1d(conf.FFTSize(), fftw_complex(tmp_spectrum.real(), tmp_spectrum.imag()), tmp_out, FFTW_ESTIMATE);
fftw_complex
. -fno-ssortingct-aliasing
. Ne faire taire que l’avertissement n’est pas sûr, car cela pourrait entraîner un code erroné.