摘要:
C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例: enum FileAccess { Read = 0x1, Write = 0x2, }; FileAccess access = ::Re... 阅读全文
摘要:
在Linux内核、嵌入式代码等传统的C代码里,会有一些难以识别的宏定义。我记得在eCos, UBoot, FFmpeg有一些比较BT的宏定义,很难读懂。对于C++程序员来说,最好将这种难读的宏定义转成inline函数或模板函数。本章对这些较难的重定义进行汇总。 1. ; 在宏定义中指定义类型参数 1: #define FPOS_TO_VAR(fpos, typed, va... 阅读全文
摘要:
浮点数的编码转换采用的是IEEE规定的编码标准,float和double 这两种类型的数据的转换原理相同,但是由于范围不一样,编码方式有些区别。IEEE规定的编码会将一个浮点数转换为二进制数。以科学计数法划分,将浮点数拆分成3部分:符号,指数,尾数。 1. float类型的IEEE编码。 Float类型在内存中占4个字节(32位)。最高位用于表示符号:剩余31位中,从右向左取8位表示用于指数,... 阅读全文
摘要:
Memory management is the heart of operating systems; it is crucial for both programming and system administration. In the next few posts I’ll cover memory with an eye towards practical aspects, but wi... 阅读全文
摘要:
Previously we looked at how the kernel manages virtual memory for a user process, but files and I/O were left out. This post covers the important and often misunderstood relationship between files and... 阅读全文