Include the required headers and function declarations. Declare input and output types.
#if FFT_2D_DT == 0 // cint16 datatype
// Configurable params...
#define FFT_INPUT_WIDTH 16
#define FFT_OUTPUT_WIDTH FFT_INPUT_WIDTH
using namespace std;
using namespace hls;
typedef ap_fixed<FFT_INPUT_WIDTH, 1> data_in_t;
typedef ap_fixed<FFT_OUTPUT_WIDTH, 1> data_out_t;
typedef complex<data_in_t> cmpxDataIn;
typedef complex<data_out_t> cmpxDataOut;
...
#else //cfloat datatype
// Configurable params...
#define FFT_INPUT_WIDTH 32
#define FFT_OUTPUT_WIDTH FFT_INPUT_WIDTH
using namespace std;
using namespace hls;
typedef float data_in_t;
typedef float data_out_t;
typedef complex<data_in_t> cmpxDataIn;
typedef complex<data_out_t> cmpxDataOut;