// Отладочная печать в stdout с указанием файла, функции, строки и сообщения в виде форматной строки #define printD(formatString, ...) fprintf(stdout, "%s / %s() / %d:\n "formatString"\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__ ) // Отладочная печать в указанный поток вывода с указанием файла, функции, строки и сообщения в виде форматной строки #define fprintD(file, formatString, ...) fprintf(file, "%s / %s() / %d:\n "formatString"\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__ ) // Сравнение двух float на равенство с заданной погрешностью #define isEQUALFLOAT(a,b,eps) (fabs(a-b) < eps) // Безопасное использование указателя: если не инициализирован - то программа прекращает работу с выводом сообщение о файле и строке с проблемой #define SAFEPOINTER(pointer) (assert(pointer?255:0),pointer)