构建安全编译环境:遵循MISRAC规则8.5
版权申诉
16 浏览量
更新于2024-08-21
收藏 95KB PDF 举报
本篇文档主要介绍了在学习MISRAC(Mobile Information Security Rating Criteria)之六——构建安全的编译环境的过程中,关于预处理阶段的规则和实践。预处理是C程序编译的第一步,它处理头文件中的内容,但常常被开发者忽视,这一步骤的正确处理关系到程序的安全性和稳定性。
规则8.5指出,头文件中不应包含对象或函数的定义,因为预处理器会将头文件的内容多次展开,可能导致函数的重复定义,从而引发编译错误。为避免这种问题,应该遵循原则:所有的可执行代码、对象和函数定义应放在`.c`源文件中,而头文件只负责声明。例如,在`Globle.h`中,应该使用`extern`修饰符声明全局变量`GCounter`:
```c
// 在Globle.h
extern uint32_t GCounter;
```
而在对应的`.c`文件中,如`GlobleVariables.c`中进行实际定义:
```c
// 在GlobleVariables.c
uint32_t GCounter;
```
有些开发者为了代码复用可能采用条件编译的方式,如在`Globle.h`中使用`#ifdef/#else/#endif`:
```c
// 在Globle.h
#ifdef GLOBLE
#define EXT extern
#else
#define EXT
#endif
EXT uint32_t GCounter;
```
然后在`.c`文件中包含头文件来决定是否使用`extern`:
```c
// 在GlobleVariables.c
#define GLOBLE
#include "Globle.h"
```
在其他`.c`文件中引用时,根据`GLOBLE`的定义选择合适的宏。
理解并遵循这些规则有助于确保函数的正确定义、声明和调用,从而建立一个更加安全的编译环境。MISRAC针对函数部分的规则旨在指导开发人员在实践中避免潜在的安全隐患,提升代码质量。通过掌握这些规则,开发者可以减少因预处理不当导致的错误,提高程序的稳定性和可靠性。
点击了解资源详情
216 浏览量
点击了解资源详情
128 浏览量
2021-10-11 上传
194 浏览量
2022-07-14 上传
836 浏览量
2022-09-20 上传
Jason–json
- 粉丝: 38
- 资源: 4万+
最新资源
- node-shopping-cart
- platzi-store-backend
- 小企业考勤表excel模版下载
- 宽敞阳光3D客厅模型设计
- upptime:Christ Christopher Demicoli的正常运行时间监控器和状态页面,由@upptime提供支持
- Colormix:将基本颜色与字符串语法相结合以创建任何 RGB 颜色。-matlab开发
- 在16x2 LCD显示屏上创建自定义动画-项目开发
- 舒适室内家装模型
- 值班表excel模版下载
- shortuuid:PHP 7.3+库可生成简洁,明确,URL安全的UUID
- laravel-webp
- uri-online-judge:ResoluçãodasQuestões做URI在线法官
- Unity ads demo
- dogify:帮助狗化网络!
- btech_cse_sem_4-material_-2021-MRU
- 超市进出货管理流程excel模版下载