Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОУК / 09 семестр / Книги и методические указания / Руководство программиста в Photon.doc
Источник:
Скачиваний:
364
Добавлен:
04.03.2014
Размер:
7.99 Mб
Скачать

Декларация внутренних связей

PhAB генерирует декларацию для каждой внутренней связи, определённой в Вашем приложении:

  • ABM_internal_link_name – где internal_link_name является указателем на внутреннее определение модуля.

Для получения более полной информации об использовании внутренних связей см. главу "Доступ к модулям PhAB из программного кода".

Декларации иконок

PhAB также предусматривает для доступа к иконкам приложения две декларации. Имена соответствуют принимаемым по умолчанию, которое Вы всегда можете использовать, когда определяете иконки:

  • ABW_LIcon –

указатель на экземпляр крупной иконки. Эта иконка используется только при использовании на полке иконок. Для получения более полной информации см. раздел "Модули иконок" в главе "Работа с модулями".

  • ABW_SIcon –

указатель на экземпляр мелкой иконки, отображающейся на панели задач. Поскольку Вы можете использовать этот указатель для доступа к иконке, легко осуществить для иконки требуемую переделку или анимацию.

Глобальный хеадер-файл

PhAB позволяет Вам определить один глобальный хеадер-файл для каждого приложения. PhAB генерирует этот файл только однажды, в первый раз, когда Вы генерируете код приложения.

 Как только Вы определили хеадер, PhAB автоматически включает его во все генерируемые заготовки С и С++ файлов. Таким образом, лучше всего определить хеадер, когда Вы впервые создаёте приложение. См. раздел "Установка стартовой информации приложения" в главе "Работа с приложениями". Вы можете модифицировать хеадер-файл в любой нужный Вам момент.

Вот удобный способ использования этого одиночного хеадер-файла для одновременного определения всех Ваших глобальных переменных и внешних ссылок на эти переменные:

/* Хеадер "globals.h" для приложения my_appl */

#include <Pt.h>

#ifdef DEFINE_GLOBALS

#define GLOBAL

#define INIT(x) = x

#else

#define GLOBAL extern

#define INIT(x)

#endif

/* глобальные переменные */

GLOBAL int variable1 INIT(1);

Если DEFINE_GLOBALS определена, то последняя строка вышеприведенного примера выглядит так:

int variable1 = 1;

Если DEFINE_GLOBALS не определена, то последняя строка приведенного выше примера имеет такой вид:

extern int variable1;

Не забудьте определить все глобальные переменные Вашего приложения с префиксом GLOBAL, как показано выше. Также убедитесь, что в один (и только в один) из Ваших файлов с исходным кодом включена следующая строка:

#define DEFINE_GLOBALS

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

 В файле Makefile сборка файлов с исходным кодом зависит от хеадер-файла. Так что если Вы внесли какие-либо изменения в хеадер-файл, при сборке Вашего приложения будут перекомпилированы все файлы с исходным кодом.

Имена функций и имена файлов

PhAB генерирует функцию для каждой функции инициализации, установочной функции модуля, ответной реакции, функции пункта меню и прочего, что Вы задаёте в Вашем приложении. Если Вам не нужна функция, оставьте пустым её имя.

После того как функция сгенерирована, Вы вольны модифицировать её. Есть только одно условие: если Вы изменили имя функции, Вы должны также изменить имя, которое Вы задали в связанной ответной реакции или определении внутренней связи. В противном случае PhAB будет продолжать регенерировать старое имя каждый раз при генерации приложения.

Способ, которым Вы задаёте имя функции в PhAB, определяет имя файла заготовки:

  • function_name Создаёт заготовку файла на С под именем

function_name.с

  • function_name@filename.ext

Создаёт заготовку функции и помещает её в filename.ext. Этот файл будет включать хеадеры и структуру функции, требуемые для компиляции в окружении Photon'а.

 PhAB опознает расширения .cc, .cpp и .С как расширения языка С++.

Если это файл уже существует, заготовка функции добавляется к нему. Вы можете использовать эту технологию для уменьшения количества файлов с исходным кодом в Вашем приложении. Вы можете разместить любое количество функций в одном файле. Мы рекомендуем Вам помещать все функции, относящиеся к модулю, в одном файле.

  • function_name.ext Короткая форма для function_name@function_name.ext

  • class::function_name@filename.cc

Генерирует заготовку функции статического члена С++, а не прототип.

  • class::function_name@ Не создаёт заготовку функции или прототип. Вместо этого вызывает функцию статического члена класса С++. Для функции члена класса прототипы не генерируются; Ваше приложение должно иметь необходимые декларации в своём глобальном хеадер-файле.

  • function_name@ Генерирует прототип С –функции, а не заготовку. Это

полезно, если Вы используете библиотеку функций С.

  • ::function_name@ Генерирует прототип для функции С++, а не заготовку.

Это полезно, если Вы используете библиотеку функций С++.

Вы можете использовать в одном и том же приложении PhAB'а и С и С++. См. раздел "Что генерирует PhAB" в главе "Генерирование, компилирование и запуск программного кода на исполнение".