Это директивы препроцессора.
Функции описанные с их помощью называют еще макросами.
все они имеют вид #define x y
где x то что надо заменить а y то на что заменить и между ними пробел, а стало быть в самих выражения x и y пробелов быть не должно, поэтому вместо return 1; там будет return(1); и прочие извращения
писать в одну строку длинные макросы не удобно, поэтому используется символ \ который означает что продолжение макроса идет на следующей строке.
если перед некоторой переменной напишешь # то она заменится на строчку представляющую собой имя той переменной new test_var = 7;
print(#test_var);
#define test_def 7
print(#test_def);
в первом случае выведется имя переменной, во втором случае выведется 7, так как test_def заменится на 7
#define mini(%1,%2) ((%1)<(%2)?(%1):(%2))
вот пример простого макроса
когда ты напишешь код типа
#define mini(%1,%2) ((%1)<(%2)?(%1):(%2))
new a = 3, b = 4;
new c = mini(a,b);
препроцессор перед компиляцией заменит его на следующий:
new a = 3, b = 4;
new c = ((a)<(b)?(a):(b));
Зайди на этот сайт и скачай от туда The pawn booklet 1. Language Guide (1.3 MiB; 2008-10-22) (раздел Documentation)
там прочитай с 93 страницы и со 118 - все это описание препроцессора и его директив.