MISRA C:2012 Rule 8.4
A compatible declaration shall be visible when an object or function with external linkage is defined
描述
规则定义
A compatible declaration shall be visible when an object or function with external linkage is defined 1 .
理由
如果在定义对象或函数时某个声明可见,编译器就可以检查该声明与上述定义是否兼容。
此规则根据 MISRA C:2012 Rule 8.5
强制应用以下做法:在头文件中声明对象(或函数)并在定义或使用对象(或函数)的源文件中包括头文件。
Polyspace 实现
此规则检查项检测下列情形:
定义了对象或函数,但前面没有声明。
对象或函数的声明与定义之间存在数据类型不匹配。这种不匹配还会导致编译错误。
此检查项现在会标记暂定的定义(未使用 extern
设定符进行声明且未显式定义的变量)。为避免违反规则,应先声明变量 static
(仅在单个文件中定义),或者先声明变量 extern
并在声明后面加上定义。
报告中的补充消息
variable_name
变量的全局定义前面没有声明。在定义函数
function_name
时,兼容的原型不可见。
故障排除
如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
组:声明和定义 |
类别:必需 |
AGC 类别:建议 |
版本历史记录
在 R2014b 中推出
另请参阅
MISRA C:2012 Rule 8.2
| MISRA C:2012 Rule 8.3
| MISRA C:2012 Rule 8.5
| MISRA C:2012 Rule 17.3
| 检查 MISRA C:2012 (-misra3)
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.