Delphi 7: отменить условие в командной строке - PullRequest
5 голосов
/ 23 ноября 2011

С помощью компилятора командной строки Delphi 7 я просто вижу опцию для определения директивы условной компиляции:

-D<syms> = Define conditionals

Можно ли отменить условное ?

Я определил DEVELOPMENT в IDE и хочу определить просто PRODUCTION в компиляторе командной строки. Проблема в том, что компилятор командной строки сохраняет определения IDE. Я хотел бы просто отменить это, насколько это возможно в мире Си.

Ответы [ 2 ]

3 голосов
/ 23 ноября 2011

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

{$DEFINE FOO}

// Allow us to undefine foo at the command line by defining UNDEFFOO
{$IFDEF UNDEFFOO}
  {$UNDEF FOO}
{$ENDIF}

{$IFDEF FOO}
  ...
{$ENDIF}

Затем используйте -D для установки UNDEFFOO.

3 голосов
/ 23 ноября 2011

Вы можете использовать {$UNDEF NAME} для отмены определения символа, эквивалентного #undef в C и C ++. Возможность отмены определения условия применима только на уровне единиц и не может применяться в рамках всего проекта. Другими словами, вы не можете сбросить условия в командной строке. Это ничем не отличается от возможностей, предлагаемых наборами инструментов C или C ++.

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

Я знаю, что это будет небольшим утешением, но более поздние версии Delphi имеют гораздо более сильную поддержку управления конфигурацией. Современные версии Delphi используют систему msbuild. Они позволяют использовать одинаковые параметры конфигурации в IDE и в командной строке. Существует гибкость, позволяющая, например, определять параметры отладки и выпуска и легко переключаться между ними. Я знаю, что мне очень приятно знать, что я использую ту же сборку в среде IDE, что и в командной строке. Я не чувствовал себя настолько защищенным в старых версиях Delphi.

...