exponenta event banner

Отключенные определения препроцессора (-U)

Отменить определение макросов в предварительно обработанном коде

Описание

Отменить определение макросов в предварительно обработанном коде.

Задать опцию

Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта параметр находится на узле Макросы.

файл командной строки и параметров: Использовать параметр -U. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

Используйте этот параметр для эмуляции поведения компилятора. Например, если компилятор рассматривает макрос _WIN32 как undefined при построении кода, он выполняет код в #ifndef _WIN32 заявление. Если Polyspace ® считает этот макрос определенным, необходимо явно отменить определение макроса .

Некоторые настройки для Compiler (-compiler) включить некоторые макросы по умолчанию. Этот параметр позволяет отменить определение макросов.

Как правило, из ошибок компиляции можно распознать, что определенный макрос должен быть неопределенным. Например, следующий код не компилируется, если макрос _WIN32 определяется.

#ifndef _WIN32
  int env_var;
#endif

void set() {
  env_var=1;
}
Сообщение об ошибке гласит, что env_var не определен. Однако определение env_var находится в #ifndef _WIN32 заявление. Основной причиной ошибки является то, что макрос _WIN32 определяется. Необходимо отменить определение _WIN32.

Настройки

По умолчанию нет

С помощью кнопки добавьте новую строку для каждого макроса, который не определен.

Совет

Спецификация компилятора определяет значения многих специфичных для компилятора макросов. Если требуется узнать, как Polyspace определяет определенный макрос, используйте опцию -dump-preprocessing-info.

  • Чтобы переопределить определение макроса из спецификации компилятора, используйте параметр Preprocessor definitions (-D).

  • Чтобы отменить определение макроса, используйте этот параметр.

Информация командной строки

Можно указать только один флаг с каждым -U вариант. Однако можно указать опцию несколько раз.

Параметр: -U
По умолчанию нет
Значение: macro
Пример (поиск ошибок): polyspace-bug-finder -U HAVE_MYLIB -U USE_COM1
Пример (проверка кода): polyspace-code-prover -U HAVE_MYLIB -U USE_COM1
Пример (сервер поиска ошибок): polyspace-bug-finder-server -U HAVE_MYLIB -U USE_COM1
Пример (сервер проверки кода): polyspace-code-prover-server -U HAVE_MYLIB -U USE_COM1