Код
typedef float real;
const float tmp = 1.0/3; // любое число, только не 0 :)
if (*(real *)&tmp == tmp)
{ asm("NOP");
}
У меня такой код в случае несоответствия типа вообще выбрасывается. Браво компилятору (IAR). В случае совпадения типов остаётся только ядро IFa без сравнения.
Или так:
Код
typedef int real;
#define RealIsFloat ((real)0.5f == 0.5f)
if (RealIsFloat)
{ // если плавающая арифметика
}
else
{ // если целочисленная арифметика
}
Сообщение отредактировал GetSmart - May 25 2008, 11:40