> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ss14.art/llms.txt
> Use this file to discover all available pages before exploring further.

# Директивы препроцессора

Space Station 14 и Robust активно используют [C# Preprocessor Directives](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives) для различных целей. В этом документе речь пойдёт о `#if` и его собратьях — условной компиляции кода в зависимости от настроек.

Этот документ описывает все директивы препроцессора (то, что можно указывать после `#if`), объявленные в Robust.

## Самые распространённые

* `DEBUG`: Игра должна компилироваться с отладочными проверками, такими как `DebugTools.Assert()`.
* `TOOLS`: Игра должна компилироваться с включёнными инструментами разработки.
* `RELEASE`: Игра компилируется в [конфигурации сборки `Release`](./build-configurations). Как правило, вам не нужно проверять это; вместо этого предпочтительнее проверять `DEBUG` и `TOOLS`, где это применимо.

## Специфичные

Обычно они не нужны для разработки контента — это больше для внутренностей движка.

* `FULL_RELEASE`: Указывает, собирается ли сборка для релиза, в который будут играть пользователи. Необходимо для правильной настройки некоторых вещей, таких как ресурсы, в финальной сборке.
* `DEVELOPMENT`: Противоположность `FULL_RELEASE`. Всегда истинно для локальной разработки, ложно для опубликованных релизов.
* `WINDOWS` / `UNIX` / `LINUX` / `MACOS`: Указывает платформу, для которой ведётся компиляция. Во многих случаях вместо условной компиляции используются проверки `OperatingSystem.IsX()` во время выполнения.
* `EXCEPTION_TOLERANCE`: Делает игру более устойчивой к сбоям, вставляя try-catch повсюду. В отладочной сборке игра намеренно хрупкая, чтобы стимулировать исправление багов.
* `CLIENT_SCRIPTING`: Включает C# Interactive на стороне клиента. Отключено в релизных сборках по соображениям безопасности и размера.
* `USE_SYSTEM_SQLITE`: Использовать системную библиотеку SQLite вместо встроенной `e_sqlite`. Используется для FreeBSD.
