-enum-type-definition
)Задайте, как представлять enum
с базовым типом
Разрешить анализу использовать различные базовые типы для представления перечисляемого типа в зависимости от значений перечислителя и выбранного определения. При использовании этой опции каждый enum
тип представлен наименьшим интегральным типом, который может содержать его перечислительные значения.
Эта опция доступна в узле Target & Compiler на панели Configuration.
Пользовательский интерфейс (только для настольных продуктов): В строении проекта опция находится на узле Target & Compiler.
Командная строка и файл опций: Используйте опцию -enum-type-definition
. См. «Информация о командной строке».
Ваш компилятор представляет enum
переменные как константы базового целого типа. Используйте эту опцию, чтобы можно было эмулировать компилятор.
Чтобы проверить настройки компилятора:
Скомпилируйте этот код с помощью настроек компилятора, которые вы обычно используете:
enum { MAXSIGNEDBYTE=127 } mysmallenum_t; int dummy[(int)sizeof(mysmallenum_t) - (int)sizeof(int)];
auto-signed-first
или auto-unsigned-first
.Скомпилируйте этот код с помощью настроек компилятора, которые вы обычно используете:
#include <limits.h> enum { MYINTMAX = INT_MAX } myintenum_t; int dummy[(MYINTMAX + 1) < 0 ? -1:1];
Если компиляции не удается, используйте auto-signed-first
для этой опции в противном случае используйте auto-unsigned-first
.
По умолчанию:
defined-by-compiler
defined-by-compiler
Использует целый тип со знаком для всех компиляторов, кроме gnu, clang и tasking.
Для компиляторов gnu и clang используется первый тип, который может содержать все значения перечислителя из этого списка: unsigned int
, signed int
, unsigned long
, signed long
, unsigned long long
и signed long long
.
Для компилятора задач он использует первый тип, который может содержать все значения перечислителя из этого списка: char
, unsigned char
, short
, unsigned short
, int
, и unsigned int
.
auto-signed-first
Использует первый тип, который может содержать все значения перечислителя из этого списка: signed char
, unsigned char
, signed short
, unsigned short
, signed int
, unsigned int
, signed long
, unsigned long
, signed long long
, и unsigned long long
.
auto-unsigned-first
Использует первый тип, который может содержать все значения перечислителя из этих списков:
Если значения перечислителя положительны: unsigned char
, unsigned short
, unsigned int
, unsigned long
, и unsigned long long
.
Если одно или несколько значений перечислителя отрицательные: signed char
, signed short
, signed int
, signed long
, и signed long long
.
Параметр:
-enum-type-definition |
Значение:
defined-by-compiler | auto-signed-first | auto-unsigned-first |
По умолчанию:
defined-by-compiler |
Пример (Bug Finder):
polyspace-bug-finder -enum-type-definition auto-signed-first |
Пример (Code Prover):
polyspace-code-prover -enum-type-definition auto-signed-first |
Пример (Bug Finder Server): polyspace-bug-finder-server -enum-type-definition auto-signed-first |
Пример (Code Prover Server):
polyspace-code-prover-server -enum-type-definition auto-signed-first |