【杂乱芝士点记录】A篇

本文探讨了编译器的不同审查规范对代码的影响,列举了常见的C语言编译器,并解释了软件分层结构在复杂系统中的重要性,尤其是在模块化和维护性方面的益处。
摘要由CSDN通过智能技术生成

1 什么是编译器?

不同的编译器,有不同的审查规范,也就间接导致了我们编译代码过程与结果的差异。同一行代码,在审查不严格的编译器,不会报错;在审查严格的编译器,则会报错。

常用的C语言编译器有GCC(G++)、TCC、Clang、VC++2010等。

取决于编译器的行为有很多,例如:浮点类型的舍入关系等。

编译器本质上就是把不同的.c/.cpp文件根据.h中的符号表汇总成一个可执行文件,源码有多大最终的可执行文件就有多大,但是可以通过dlopen形式调用动态链接库,这样的优点有:

在代码处使用函数标识符形式替代函数体,可缩小可执行文件的体积。

在中间件代码中,中间件涉及多平台共用场景,若某平台未添加某函数的实现,则不会导致编译问题,此条最重要。

2 软件为什么需要分层结构?

之前在做嵌入式裸机开发时,一直不理解如何分层设计,是直接调用方案商/原厂提供的库还是中间封装一层再给逻辑层使用?到底OSI七层模型为什么要搞个七层而不是直接就一层给工程师开发?如今在接触更复杂的软件系统后,逐渐明白,当某模块可独立且需要有大量独立逻辑时,才有必要针对此模块单独分层设计。只有这样,针对复杂的软件系统,可以分层给不同的开发人员做维护,各层之间再通过其他API进行传递。分层后,由于所有代码不是在一坨上,模块化设计可使代码更易于维护。

3 程序调试时最难调试的Bug?

程序调试时最大的Bug是Core dump,Core dump发生时无既定Log打印,无法排查具体位置,一般当调用接口的实现不存在时或者出现踩内存的情况时会出现Core dump。

Core dump出现的解法:

Android中可以查看bugreport文件,此文件中包含程序出问题的代码段信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱笑的七小沐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值