-U
)Не задайте макросы в предварительно обработанном коде
Не задайте макросы в предварительно обработанном коде.
Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Macros.
Командная строка: Используйте опцию -U
. Смотрите информацию о Командной строке.
Используйте эту опцию, чтобы эмулировать ваше поведение компилятора. Например, если ваш компилятор рассматривает макро-_WIN32
как неопределенный, когда вы создаете свой код, он выполняет код в операторе #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
.Никакое значение по умолчанию
Используя кнопку, добавьте новую строку для каждого макроса, являющегося неопределенным.
Можно задать только один флаг с каждой опцией -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 |