...
#define DEMO
...
#ifndef DEMO
// полноценный код
...
#else
// демо-код
...
#endif
...
DEMO версия через предопределение #define
Как это лучше всего сделать? Или скажем, как лучше всего сделать DEMO-версию программы, в которой урезанный функционал?
А лучше использовать #define? может есть какие-нибудь другие варианты и способы?
PS: а где еще используется #define и подобные вещи? так, для интереса - может понадобятся...
Цитата: 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
{
...
}
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
#define _file_h
...
// код
...
#endif
2. второе - да... но когада функционала нет - то и взламывать ключ смысла тоже нет :) функционал не откроется... да и ключа тоже нет.. программа ведь только демонстрирует часть своих возможностей...
3. а чем мешают многократные включения заголовочных файлов? размер файла увеличивается? например, если используются 5 форм, в каждой прописано #include <vcl.h> то луxit установить #define на обработку?
Цитата: frid-karatel
3. а чем мешают многократные включения заголовочных файлов? размер файла увеличивается? например, если используются 5 форм, в каждой прописано #include <vcl.h> то луxit установить #define на обработку?
размер увеличится в лучшем случае - если собрать удастся. в худшем - будут ошибки при сборке. при больших многомодульных проектах, где не помнишь уже, что и где подключал, такое запросто может случится. поэтому советую все заголовки так оформлять.
ок, спасибо за ответ ;) :)
Код:
#IF DEFINED _DEBUG
Функция_Проверки(); // Своя функция, которая что-то делает
OutputDebugStringA (Значение); // Системная функция, выводящая значение const char* в консоль Builder'а
#ENDIF // _DEBUG
Функция_Проверки(); // Своя функция, которая что-то делает
OutputDebugStringA (Значение); // Системная функция, выводящая значение const char* в консоль Builder'а
#ENDIF // _DEBUG
Директива _DEBUG автоматически прописывается в свойствах проекта, когда он переводится в режим Debug и отключается в режиме Release (окно "Project options" вкладка "Compiler").
Также в свойствах проекта самому множно прописывать глобальные #DEFINE - окно "Project options" вкладка "Directories / Conditionals"
так-так-так... :) это интересно... в консоль, в смысле туда, где показываются ошибки компилятора или предупреждения?
Вообще-то в это окно выводтся всё. Чтобы разобраться в этом бардаке, нужно настроить фильтр сообщений - главное меню \ tools \ debugger options... В открывшемся окне на вкладке Event log в области Messages выбираются требуемые для успешной отладки сообщения.
Для работы функции OutputDebugStringA нужно выбрать "Output messages"