摘要:
c语言中的printf和putchar都是为ascii码准备的。要想显示中文,必须通过<wchar.h>这个头文件中(和对应的库)提供的函数wprintf和putwchar来实现。 在使用wprintf之前,设置c语言自身的环境,使用setlocale即可。有<locale.h>提供该函数。示例如下 阅读全文
摘要:
linux采用模块化的思想来管理内核所提供的功能。比如驱动程序可以制作成模块,当安装上相应的硬件时,就将该模块载入,以提供访问该硬件的功能,当硬件被移除时,就将模块卸载,可以节约空间。 我使用Manjaro来作驱动开发,以下是我的经验。 一.编写一个简单的内核模块 参考LDD这本书,模块程序需要三个 阅读全文
摘要:
ISO C标准对C语言中数据类型的大小做了要求,下表展示了这个要求,其中有不同数据类型的最小值的要求,也有在32bit和64bit操作系统下的实现。 C语言数据类型大小规定与实现 名称 说明 可接受的最小值 32bit系统典型值 64bit系统典型值 CHAR_BIT char的位数 8 8 8 C 阅读全文
摘要:
操作系统的实现中,有很多数据的数据类型是不同的,比如历史上的主设备号和次设备号,分别为8位,而Solaris则分别是14位和18位,那么我现在正在使用的操作系统,其主从设备号分别是多少位呢? 类似设备号这样的操作系统属性,其数据类型都由文件<sys/types.h>来定义,统称为基本系统数据类型(p 阅读全文
摘要:
一:内存泄漏的问题 考虑如下的程序 void func() { ClassA *a = new ClassA; ... delete a; } 应该使用delete语句以保证new分配的空间一定会被释放。我几乎总会忘记delete语句,尤其函数要写return语句时,更容易忘记。 另外即使你加上了d 阅读全文
摘要:
在C++头文件<utility>中,定义了一个命名空间rel_ops,其中专门存放了四个不同的比较操作符:>=、<=、>、!=。代码实现如下: namespace std{ namespace rel_ops{ template<class T> inline bool operator!=(con 阅读全文
摘要:
今天玩c++的时候遇到一个有趣的问题,后来意识到问题所在的时候,发现原因是自己一直以来都习惯性的忽视编译的警告信息。程序如下: #include<iostream> #include<cstdlib> #include<new> void no_memory(){ std::cout <<"Fail 阅读全文
摘要:
c++中,有操作符 operator() ,可以在对象后加上操作符 () ,使程序看起来像是函数执行。 #include<iostream> using namespace std; template<typename T> class print { public: void operator() 阅读全文
摘要:
C++中的所有容器都支持三个核心能力: 所有容器提供的都是‘value语义’而非‘reference语义’。可以通过指针元素来实现某些功能。 容器的所有元素有一个固定的次序(order),你可以以相同的次序多次遍历每个元素。并且每个容器也提供“迭代器生成器”函数,运用这些生成的迭代器可以遍历整个容器 阅读全文
摘要:
c++中的函数语法,只能有一个返回值,不像python一样,可以把多个返回值包装到一个元组中,如下 (x,y) = get_postion(value) C++在标准库中定义了工具类std::pair<class T1, class T2>,使C++可以通过相似的方法支持返回两个值。pair的源码类 阅读全文