По умолчанию (без явного объявления) к переменным и константам применяется тип
int (signed int). Поскольку в стандарте Си размерность типов переменных явно не определена (определены только диапазоны в limits.h), то для надежности на 8-ми/16-и битных платформах нужно явно указывать тип больших по величине констант, добавляя к числу суффикс.
L - signed long (например, 100000L)
UL - unsigned long (например, 7372800UL)
f - float (например, 3.14159f).
Кстати, без суффикса f константа 7.3728 в примере выше
Код
#define OS_FSYS_MHZ 7.3728 // Системная частота [MHz]
может легко стать 64-и разрядной double, в зависимости от настроек проекта и/или если препроцессор посчитает это нужным. Опять же, может я конечно и ошибаюсь, но по-моему препроцессор вычисляет только целочисленные выражения в макросах. Так что макрос типа
Код
#define XMIN 1.2345
#define XMAX 2.3456
#define YMIN 3.456
#define YMAX 4.5678
#define LINE(x) ((YMAX-YMIN)/(XMAX-XMIN)*(x-XMIN)+YMIN)
при подстановке в операцию
Код
y=LINE(x);
даст только лишь удобство написания, но скорость вычисления не уменьшит.