Three places need to fix if want to compile with MSVC:
- complex types in MSVC-C is _Fcomplex and _Dcomplex, not conforming to C99 , should should replace
xxx _Complex with following macro:
#ifndef HPTT_C_FLT_COMPLEX
#ifdef _MSC_VER
#define HPTT_C_FLT_COMPLEX _Fcomplex
#define HPTT_C_DBL_COMPLEX _Dcomplex
#else
#define HPTT_C_FLT_COMPLEX float _Complex
#define HPTT_C_DBL_COMPLEX double _Complex
#endif
#endif
- the
INLINE macro should add specification with MSVC: __forceinline
#if defined(__ICC) || defined(__INTEL_COMPILER) || defined(_MSC_VER)
# define INLINE __forceinline
#elif .....
- MSVC does not support VLA, should use
_alloca instead.
#ifdef _MSC_VER
#define HPTT_DECL_VLA(type_, name_, len_) type_* name_ = reinterpret_cast<type_*>(_alloca(sizeof(type_)*len_));
#else
#define HPTT_DECL_VLA(type_, name_, len_) type_ name_[len_];
#endif
Three places need to fix if want to compile with MSVC:
xxx _Complexwith following macro:INLINEmacro should add specification with MSVC:__forceinline_allocainstead.