#define
- это директива препроцессора, унаследованная от C, которая принимает форму
#define identifier value
В общем, она используется, чтобы указать препроцессору заменить все экземпляры identifier
в коде на заданныетекст перед передачей его компилятору.Идентификаторы также могут быть определены без значений, которые будут использоваться в качестве флагов компилятора для предотвращения множественных определений одних и тех же переменных или для перехода на детали машины, которые не изменятся во время выполнения.Например, чтобы передать другой код компилятору на основе архитектуры вашего процессора, вы могли бы сделать что-то вроде:
#ifdef INTEL86
//some 32-bit code
#else
//some 64-bit code
#endif
При назначении значений в этих определениях часто рекомендуется заключать в скобки значениечтобы сохранить его как одну единицу, независимо от контекста, в котором он существует.
Например, #define FOO 3 + 7
имеет результат, отличный от #define FOO (3 + 7)
в результате следующей строки, из-за порядкаарифметические операции:
a = 3 * FOO
См. эту ссылку для получения более подробной информации о директивах препроцессора в целом или эту ссылку для получения информации, более сфокусированной на цели C.