Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

DEMO версия через предопределение #define

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

Как это лучше всего сделать? Или скажем, как лучше всего сделать DEMO-версию программы, в которой урезанный функционал?
245
25 октября 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Код:
...
#define DEMO
...
#ifndef DEMO
    // полноценный код
       ...
#else
    // демо-код
       ...
#endif
...
490
25 октября 2007 года
frid-karatel
357 / / 15.09.2007
получается, если я, например, хочу сделать цикл в демо версии не, скажем, от 1 до 100, а от 1 до 5, то надо делать через переменную... да?

А лучше использовать #define? может есть какие-нибудь другие варианты и способы?

PS: а где еще используется #define и подобные вещи? так, для интереса - может понадобятся...
245
25 октября 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: frid-karatel
получается, если я, например, хочу сделать цикл в демо версии не, скажем, от 1 до 100, а от 1 до 5, то надо делать через переменную... да?



немного не понял вопроса, но

 
Код:
#define DEMO
unsigned int i;
#ifndef DEMO
    for ( i = 1; i <= 5; i++)
#else
    for ( i = 1; i <= 100; i++)
#endif
    {
         ...
    }

не оно?

Цитата: frid-karatel
А лучше использовать #define? может есть какие-нибудь другие варианты и способы?


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

Цитата: frid-karatel
PS: а где еще используется #define и подобные вещи? так, для интереса - может понадобятся...



например для предотвращения многократного включения заголовочных файлов.
прописываешь в файле:

file.h:

 
Код:
#if !defined ( _file_h )
#define _file_h
...
// код
...
#endif
490
25 октября 2007 года
frid-karatel
357 / / 15.09.2007
1. первое - прямо в цель - я это и хотел узнать...
2. второе - да... но когада функционала нет - то и взламывать ключ смысла тоже нет :) функционал не откроется... да и ключа тоже нет.. программа ведь только демонстрирует часть своих возможностей...
3. а чем мешают многократные включения заголовочных файлов? размер файла увеличивается? например, если используются 5 форм, в каждой прописано #include <vcl.h> то луxit установить #define на обработку?
245
25 октября 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: frid-karatel

3. а чем мешают многократные включения заголовочных файлов? размер файла увеличивается? например, если используются 5 форм, в каждой прописано #include <vcl.h> то луxit установить #define на обработку?



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

490
25 октября 2007 года
frid-karatel
357 / / 15.09.2007
ок, спасибо за совет ;)
ок, спасибо за ответ ;) :)
309
26 октября 2007 года
el scorpio
1.1K / / 19.09.2006
Ещё #DEFINE применяется в отладочных целях.
 
Код:
#IF DEFINED _DEBUG
Функция_Проверки(); // Своя функция, которая что-то делает
OutputDebugStringA (Значение); // Системная функция, выводящая значение const char* в консоль Builder'а
#ENDIF // _DEBUG

Директива _DEBUG автоматически прописывается в свойствах проекта, когда он переводится в режим Debug и отключается в режиме Release (окно "Project options" вкладка "Compiler").
Также в свойствах проекта самому множно прописывать глобальные #DEFINE - окно "Project options" вкладка "Directories / Conditionals"
490
26 октября 2007 года
frid-karatel
357 / / 15.09.2007
так-так-так... :) это интересно... в консоль, в смысле туда, где показываются ошибки компилятора или предупреждения?
309
29 октября 2007 года
el scorpio
1.1K / / 19.09.2006
Почти. Отладочные сообщения выводятся в окно "Event log" - открывается в списке отладочных окон (Debug windows) среды разработки (главное меню \ view).
Вообще-то в это окно выводтся всё. Чтобы разобраться в этом бардаке, нужно настроить фильтр сообщений - главное меню \ tools \ debugger options... В открывшемся окне на вкладке Event log в области Messages выбираются требуемые для успешной отладки сообщения.
Для работы функции OutputDebugStringA нужно выбрать "Output messages"
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог