FOnline
|
Прежде чем подвергать компиляции исходный код скрипта, скрипт передается на обработку встроенному препроцессору.
Препроцессор на входе получает иходный код, написанный
программистом, а на выходе выдает переработанный код, полученный с
учетом указанных в скрипте директив.
Директивы препроцессора:
Директива "#include" включает в состав исходного файла содержимое указанного файла. Таким образом, после обработки препроцессором, все строки:
будут заменены содержимым указанного файла.
Директива "#define" в основном используется для создания констант и макросов:
Пример константы:
После такого объявления, в коде скрипта можно использовать строку MONEY_PID вместо прямого указания номера 41, в тех местах, где необходимо указать пид, используемый в качестве денег. После обработки препроцессором, все строки "MONEY_PID" будут заменены на "(41)"
Пример макроса:
После такого объявления, встреченные в исходном коде строки:
будут заменены на:
При этом, строка SLOT_ARMOR будет заменена на (3), так как в
файле _defines.fos объявлена директива "#define SLOT_ARMOR (3) //
Armor slot"
"#ifdef" - открытие блока "если определено"
"#ifndef" - открытие блока "если не определено"
"#endif" - закрытие блока
Директивы #ifdef, #ifndef и #endif существуют для еще большего
удобства скриптера.
Пример исползования:
В данном примере в исходном коде после обработки препроцессором
встретятся строки "Log(.......);" и "SayId(.......);", однако, если
убрать или закомментировать строку "#define
<strong>DEBUG</strong>", то в коде будет только строка
"StartAttack(.......);"
Помимо обработки директив, препроцессор убирает из исходного кода
все комментарии, так как они не важны для компилятора.
Стоит так же отметить, что при сообщении компилятором об ошибках в
коде, он выдает номера строк и символов в коде после обработки
препроцессором.
Обработанные препроцессором скрипты появляются при запуске сервера
и находятся в папке скриптов с расширениями "fosp", если необходимо
посмотреть полученный код при ручном компилировании, необходимо
передать компилятору имя файла, куда будет помещен полученный код,
с помощью параметра "-p".
Типичная функция после обработки препроцессором:
Исходный вид функции:
Converted from CHM to HTML with chm2web Pro 2.85 (unicode) |