一、需求
(CSDN上有人贴出了微创的三道面试题目,这是第三道)
在不同系列的CPU上面,有不同的字节序。为了在底层做适配,需要获取当前环境的字节序。请完成此功能。
二、现状
但我看到大部分人用的都是用函数调用的方式,获取字节序。返回BigEndian, LitterEndian,Error的形式。
缺点:1。开销大,函数开销大,如果能够以一条语句直接判断获取,效率会高的多。
2。返回的Error形式,纯粹就是一种失败。即使返回Error,谁又会对这个Error进行处理?????这么简单一个函数都返回Error,你要上层的用户(调用此函数的用户)怎么处理?(原则:要么就不要返回错误;如果返回错误的,就一定要处理。)
三、新的解决办法
typedef unsigned int DWORD;
typedef unsigned short int WORD;
#define EndianTestNum 1
const DWORD dwEndianTest = EndianTestNum;
const WORD* pwEndianFirst = &dwEndianTest;
#define bBigEndian (EndianTestNum == (*pwEndianFirst))
四、结论
我没有测试,也没有优化,但应该没什么问题。不管是从可读性、还是从效率上来说,这应该都不错。
我认为:编码、调试、测试是一个程序员的素质。软件的质量在于设计。设计来源于需求。
没去测是因为我相信设计上合理的东西,其他的都是小问题。
浙公网安备 33010602011771号