Готовый перевод QuakeC Manual / QuakeC Мануал: 3.Переменные и типы данных

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

3.1. Типы

Множество значений, и набор примитивных операций, которые реализуют основные аспекты его семантики

характеризующие тип.Объект данного типа является ентити во время выполнения , которое содержит (имеет) значение этого типа.

Вы не можете определить новые типы из существующих.В частности, вы не можете определить новые структуры или

объекты.Эти ограничения делают QuakeC неблагоприятным по сравнению с BASIC.

Вы можете добавить поля только для наиболее важных типов в QuakeC: ентити.

3.2. Простые типы

3.2.1.1. Пустые типы

void_declaration => void

Пустой результат, в основном, используется для определения процедуры (т. е. функции, которые не возвращают результат на всех).

3.2.1.2. Типы с плавающей точкой

floating_point_declaration => float name

Значение с плавающей точкой.Float также используется для хранения Булевых(TRUE, FALSE) значений; целочисленных(integer) значений, таких как

счетчики, либо флаги.

Анализ двусмысленности присутствует с отрицательными константами: "a-5" (5 вычитается из а) будет анализироваться как

"a", затем "-5", что приведет к ошибке. Отделим "-" от цифры пробелом ("а - 5"), чтобы получить надлежащее

свойство.

3.2.1.3. Векторные типы

vector_declaration => vector name

Вектор состоит из трех координат с плавающей точкой.Используется для обозначения позиции или направления в 3D-пространстве.

Обратите внимание, что одинарные кавычки (') окружают вектор.Не используйте двойные кавычки,они зарезервированы для строк.

Если вы объявляете вектор foobar, то вы можете получить его поля x, y и z,с float типами: foobar_x,

foobar_y, и foobar_z.

3.2.1.4. Строковые типы

string_declaration => string name

Представляет собой строку символов.Используется для указания имени файла или сообщения, которые будут транслироваться игрокам.Используйте

”\n “ для новой строки.\" может быть использован, чтобы включить кавычки (") в строке.

3.2.1.5. Типы ентити

entity_declaration => entity name

Ентити представляет объекты в игре, такие как вещи, игроков или монстров.Например, этот тип

ентити self и other.Тип ентити представляет собой структурированный тип, состоящий из полей.

3.2.2. Типы полей

В отличие от других типов, тип ентити является ссылкой на экземпляр структурированного объекта, который содержит

информацию самых разных видов, она хранится в полях объекта ентити.Каждому полу дается имя и

тип.

Некоторые поля не хранят значения;вместо этого, они хранят функцию, которая будет выполняться при определенных

условиях, вызванных методов..

Если QuakeC был объектно-ориентированным языком программирования,метод функции отличался бы от

других полей, и вы смогли бы создавать новые типы объектов, с собственными полями.

Поскольку QuakeC в настоящее время стоит,все определения поля-определения полей ентити.Таким образом, в вашем

коде можно добавить определение нового поля, а компилятор будет интерпретировать его как продолжение

определения ентити.

Вот все возможные определения полей ентити, с их типами:

.float name

.string name

.vector name

.entity name

3.2.3. Зарезервированные типы полей

DEFS.QC,первый файл,который читает компилятор,тут должны быть определены поля ентити и

все другие поля.Данное определение жестко запрограммированно, и не может быть изменено без необходимости перекомпиляции

движка Quake.

В DEFS.QC, глобальные переменные определены до того, как специальным определением “void end_sys_globals;“,а

поля ентити определены до специальным определением “void end_sys_fields;”.Не важно

понимать теги, просто не изменяйте DEFS.QC перед этими двумя тегами, и не будет проблем. Лучше

тем не менее, избежать изменения DEFS.QC вообще и использовать файлы заголовков для определения поля ентити , глобальных переменных, констант,

и прототипов.

3.3. Определение переменных

variable_declaration => [local] simple_type name [ = immediate][, name][ =

<immediate>] …

Есть два уровня видимости.По умолчанию все переменные являются глобальными: они могут быть доступны любой

функции,и они являются общими для всех функций (и всех клиентов данного сервера, разумеется).

Обратите внимание, что переменным не может быть дано начальное значение по умолчанию в качестве части их декларации.

Использование ключевого слова local перед объявлением переменной, делает значение(я) видимыми только для

себя (то есть она будет в стеке).

Обратите внимание, что параметры функций рассматриваются как локальные переменные, они видны только функции, но

они могут быть изменены.

3.4. Определение константы

constant_declaration => simple_type name = value

Любая глобальная переменная которая инициализируется путем установки значения к нему фактически считается постоянной.С
постоянной

на самом деле представлены непосредственные значения, вы не должны пытаться изменить константу

придав ей другое значение.Кроме того, не используйте другую константу в качестве значения константы. литералы должны

использоваться только в качестве значения констант.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/38550/141710

Переводчики: railgun

Настройки

Готово:

100.00% КП = 1.0