This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
香榭丽舍
我向我们的客户提出这一问题。
用户的环境是:
CCS:8.3.0.00009
编译器:TI v 18.1.4.LTS
奇怪的是、当他们在 C28x 和 CLA 中编译相同的代码时、MISRA-C 2004会产生非常不同的结果。
在 CLA 上、它们对代码有更多的警告。
这些警告基本上是规则10.1和12.2、如下所示:
#1393-D (MISRA-C:2004 10.1/R)如果表达式复杂、整数类型表达式的值不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)如果表达式复杂、整数类型表达式的值不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)如果表达式复杂、整数类型表达式的值不应隐式转换为不同的基础类型
#1487-D (MISRA-C:2004 12.2/R)根据标准允许的任何评估顺序、表达式的值都应相同
#1393-D (MISRA-C:2004 10.1/R)整数类型表达式的值如果不转换为相同符号的更宽整数类型、则不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)整数类型表达式的值如果不转换为相同符号的更宽整数类型、则不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)整数类型表达式的值如果不转换为相同符号的更宽整数类型、则不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)整数类型表达式的值如果不转换为相同符号的更宽整数类型、则不应隐式转换为不同的基础类型
#1393-D (MISRA-C:2004 10.1/R)整数类型表达式的值如果不转换为相同符号的更宽整数类型、则不应隐式转换为不同的基础类型
我们的问题:
1) 1)为什么上述 代码在 C28x (右侧)上传递、但在 CLA (左侧)上收到许多警告?
2) 2)当我们尝试实施 MISRA-C 2004检查时、CLA 是否有任何特殊限制?
你有什么意见吗?
黄维恩
这可能与 int 类型的大小不同相关。 在 C28x 上、它是16位。 在 CLA 上、它是32位。 例如,此语句...
short_variable = int_variable;
(笑声) 构建为 C 代码时不获取 MISRA 诊断、但构建为 CLA 代码时看到诊断10.1。
谢谢、此致、
乔治
为了详细解释这些内容、我需要一个测试案例、允许我重现诊断。 对于获取 MISRA 诊断的源文件、请按照文章 如何提交编译器测试用例中的说明进行操作。 但有一个差异。 我需要确切了解文件是如何为 CLA 和 C28x 构建的。
谢谢、此致、
乔治
请提供请求的测试用例。
谢谢、此致、
乔治
乔治
我们尝试使用一个简单的项目来重现此问题、并发现潜在的"int"可能是问题、正如您所说的那样。
如果我们正确地转换"int"、则看不到问题。
我们将与用户进行更详细的检查。
因此、现在可以解决此问题。
如果有任何新的相关问题、我将发布另一个问题。
非常感谢。
黄维恩