C 标准版本 (-c-version
)
指定源代码中遵循的 C 语言标准。
描述
请在源代码中指定您所遵循的 C 语言标准。此选项适用于动态测试和静态分析。
设置选项
使用以下方法之一设置选项:
Polyspace® 用户界面(仅限桌面端产品):在您的工程配置中,选择目标和编译器节点,然后为此选项选择一个值。有关您必须先启用的其他选项,请参阅依赖关系。
Polyspace 平台用户界面(仅限桌面端产品):在工程配置中,在编译选项卡上,选择目标和编译器节点,然后为该选项选择一个值。有关您必须先启用的其他选项,请参阅依赖关系。
为何使用此选项
使用此选项,以便 Polyspace 在编译时允许 C 标准版本特有的功能。例如,如果您使用 GCC 并使用标记 -ansi
或 -std=c90
进行编译,则为此选项指定 c90。如果您不确定语言标准,请指定 defined-by-compiler。
例如,假设您在代码中使用了布尔数据类型 _Bool
。此类型在 C99 标准中定义,但在之前的标准(如 C90)中未被提及。如果 Polyspace 编译遵循 C90 标准,您会看到编译错误。
某些 MISRA C™ 规则会根据您使用的是 C90 还是 C99 标准而有所不同。例如,MISRA C C:2012 规则 5.2 规定,同一作用域和名称空间中的标识符必须是唯一的。如果您使用 C90 标准,则前 31 个字符相同的不同标识符违反了此规则。如果使用 C99 标准,字符数将增加到 63 个。
设置
默认值: defined-by-compiler
- defined-by-compiler
该分析基于您对
编译器 (-compiler)
的规格定义。- c90
该分析使用 ISO®/IEC 9899:1990 标准,非正式地称为 C90 标准。Polyspace 允许使用 C99 关键字
inline
,其值为c90
。- c99
该分析使用的是 ISO/IEC 9899:1999 标准,非正式地称为 C99 标准。
- c11
该分析使用的是 ISO/IEC 9899:2011 标准,非正式地称为 C11 标准。
- c17
分析使用的是 ISO/IEC 9899:2018 标准,非正式地称为 C17 或 C18 标准。
本版本修复了 C11 标准中的缺陷,但未引入新的语言特性。
__STDC_VERSION__
宏的值增加到201710L
。
依赖关系
仅在您将
Source code language (-lang)
设置为 C 或 C-CPP 时,此选项才可用。如果您使用
polyspace-configure
命令或polyspaceConfigure
函数从编译系统创建工程或选项文件,则此选项的值将自动从编译系统确定。如果编译系统对不同的文件使用不同的标准,后续的 Polyspace 分析可以模拟您的编译系统,对这些文件使用不同的标准进行编译。如果您在 Polyspace 用户界面中打开此类工程,则选项值将显示为 defined-by-compiler。但是,Polyspace 没有使用一个标准,而是使用隐藏选项
-options-for-sources
将不同的标准与不同的文件关联起来。
命令行信息
参数:-c-version |
值:defined-by-compiler | c90 | c99 | c11 | c17 |
默认值:defined-by-compiler |
示例 (Bug Finder):polyspace-bug-finder -lang c -sources |
示例 (Code Prover):polyspace-code-prover -lang c -sources |
示例 (Bug Finder Server):polyspace-bug-finder-server -lang c -sources |
示例 (Code Prover Server):polyspace-code-prover-server -lang c -sources |