枚举类型定义 (-enum-type-definition)
指定如何用基类型表示 enum
描述
允许分析操作使用不同的基类型来表示枚举类型,具体取决于枚举器值和所选的定义。使用此选项时,每个 enum 类型由可以容纳其枚举值的最小整数类型来表示。
此选项位于配置窗格中的目标和编译器节点上。
设置选项
用户界面(仅限桌面端产品):在您的工程配置中,此选项位于目标和编译器节点上。
用户界面(仅限 Polyspace 平台、桌面端产品):在您的工程配置中,该选项位于“编辑处理器”窗口中。此窗口可从编译选项卡中的目标和编译器节点打开。请参阅处理器详细信息。
为何使用此选项
编译器将 enum 变量表示为基整数类型的常量。使用此选项可以模拟您的编译器。
要检查您的编译器设置:
请使用您常用的编译器设置编译以下代码:
如果编译失败,则您必须使用 auto-signed-first 或 auto-unsigned-first。enum { MAXSIGNEDBYTE=127 } mysmallenum_t; int dummy[(int)sizeof(mysmallenum_t) - (int)sizeof(int)];请使用您常用的编译器设置编译以下代码:
#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。对于 tasking 编译器,它使用以下列表中第一个可以容纳所有枚举器值的类型:
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 |