{$ WARN SYMBOL_PLATFORM OFF} не отключает предупреждения

У меня есть этот фрагмент кода:

INTERFACE

{$WARN SYMBOL_PLATFORM OFF}
USES
   Winapi.Windows, etc, {$IFDEF MSWINDOWS}Vcl.FileCtrl, {$ENDIF} System.IniFiles;
{$WARN SYMBOL_PLATFORM ON}

Компилятор показывает:

[Предупреждение dcc32] Модуль W1005 'Vcl.FileCtrl' зависит от платформы

хотя там есть {$ WARN SYMBOL_PLATFORM OFF}.
Почему?


person Z80    schedule 23.09.2016    source источник


Ответы (1)


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

Управляйте этими предупреждениями с помощью UNIT_PLATFORM.

Весь блок помечается (с помощью директивы подсказки платформы) как блок, содержащий материал, который может быть доступен не на всех платформах. Если вы пишете приложения для нескольких устройств, это может вызвать проблему. Например, модуль, использующий объекты, определенные в OleAuto, может быть помечен с помощью директивы PLATFORM.

Директива компилятора $ WARN UNIT_PLATFORM ON / OFF включает или выключает все предупреждения о директиве платформы в модулях, где указана директива платформы.


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

  • W1002 Символ "% s" специфичен для платформы (Delphi)
  • W1005 Модуль "% s" зависит от платформы (Delphi)

В полученном предупреждении компилятора имя предупреждения обозначается как W1005. Это все, что вам нужно знать, чтобы определить, какую директиву использовать для управления им. Если у вас возникли проблемы с их поиском, просто поищите имя предупреждения, в данном случае W1005. Или обратитесь к документации , в которой перечислены все.

person David Heffernan    schedule 23.09.2016