Библиотека Intel Math Kernel содержит этот бит кода в заголовочном файле:
#ifndef MKL_Complex16
typedef
struct _MKL_Complex16 {
double real;
double imag;
} MKL_Complex16;
#endif
как описано здесь и обсуждено здесь , это определение структуры может быть переопределено пользователем, написав
#define MKL_Complex16 std::complex<double>
до включения заголовочного файла. В этой строке MKL_Complex16
равно #define
'd, что означает, что строка символов просто заменяется буквальными символами std::complex<double>
везде. Если нет, то это typedef
'ed, что дает компилятору больше информации.
Считается ли это приемлемой практикой? Я думаю, это должно быть, так как это реализовано Intel. Но я нашел это очень запутанным, пытаясь отладить некоторый код.