Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DEMO версия через предопределение #define 
:(
    Опции темы
fridkaratel
  Дата 25.10.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



Слышал, что можно использовать #define или что-то в этом роде для предопределения компиляции определенных кусков. Т.е. если я укажу, что демо, то некоторые части исходного кода не будут включены в программу, т.е. вообще не будут откомпилированы.

Как это лучше всего сделать? Или скажем, как лучше всего сделать DEMO-версию программы, в которой урезанный функционал?
PM   Вверх
zkv
Дата 25.10.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



Цитата(fridkaratel @  25.10.2007,  17:55 Найти цитируемый пост)
Или скажем, как лучше всего сделать DEMO-версию программы, в которой урезанный функционал? 

надежнее всего исключить из компиляции лишние участки кода.
Код

#define COMPILE_AS_DEMO//предварительно
...
#ifndef COMPILE_AS_DEMO
//участок кода который хотим исключить
...
#endif//COMPILE_AS_DEMO

теперь, если макрос COMPILE_AS_DEMO определен, то будет компилироваться урезанная версия, если нет - то полная.
плюс посмотри в хелпе, какие директивы еще могут помочь тебе (#else #elif и пр.)
PM MAIL   Вверх
fridkaratel
Дата 25.10.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



а вообще, какие директивы часто используются и для чего?

вот буквально пару дней назад я пытался запихать в директиву константу... на что получил отве копилятора об ошибке... smile

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

PS: в справке такого узнать нельзя - ведь она дает ответ только по интересующему вопросу, а не дает интересной информации... для размышления ;)

Это сообщение отредактировал(а) fridkaratel - 25.10.2007, 18:32
PM   Вверх
Starikan
Дата 25.10.2007, 18:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 25.10.2007

Репутация: нет
Всего: -15



fridkaratel, Подгрузка массивов в директивный поток с использованием функций из библиотек разынх видов архивов является хорошим вариантом решения данной проблемы
PM MAIL   Вверх
fridkaratel
Дата 25.10.2007, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



Starikan, хороший пост... smile все так понятно... я же новичок... ;) smile
PM   Вверх
dumb
Дата 25.10.2007, 19:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(fridkaratel @  25.10.2007,  19:56 Найти цитируемый пост)
все так понятно... я же новичок...
а это никому не понять, кроме автора(да и то сомнительно). называется - "сумничал".
PM MAIL   Вверх
zkv
Дата 25.10.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



да все это уже на десять рядов расписано. 
На пальцах.  Компиляция происходит в несколько проходов, так вот директивы препроцессору анализируются до того как начинается разбор исходника (точнее в справке к компилятору смотри).
Отсюда и все следствия - макроопределения бьют все остальные конструкции. 
С помощью них можно указать какие участки кода компилировать какие нет (пример показал выше), 
ну вот поизощренней пример:
Код

#define STRUCT_PERSON_VERSION 2

struct PERSON//компилится в любом случае
{
    bool gender;
#if !defined( STRUCT_PERSON_VERSION )
    #error Version of struct PERSON is not defined //если макрос не определен то ошибка
#elif ( STRUCT_PERSON_VERSION == 1 )
    char name[10];//в первой версии использовали сингл чар
#elif ( STRUCT_PERSON_VERSION == 2 )
    wchar_t name[10];//во второй вайд чар
#else
    TCHAR name[10]; //потом решили перейти на TCHAR
#endif
};


или какие участки компилировать только 1 раз, часто используется в хедерах, как защита от двойного подключения:
Код

#ifndef MyHeader_H
#define MyHeader_H
...
//содержание хедера
...
#endif //MyHeader_H


Это сообщение отредактировал(а) zkv - 26.10.2007, 10:00
PM MAIL   Вверх
fridkaratel
Дата 26.10.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

Репутация: нет
Всего: нет



вот тут все понятно досканально! большое спасибо! ;)
PM   Вверх
zkv
Дата 26.10.2007, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



опечатки были, исправил.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0683 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.