《c++ primer》读书笔记知识点

《c++ primer》读书笔记知识点

笔记范围:1.3节到1.4

说来惭愧,在学c的时候对于1.3节中所讲的内容就没有好好读过,以至于在相当长的一段时间里,过得糊里糊涂的,当然,主要的责任在我自己。但是,背了这么大的罪,有点不甘心。恩,得找点理由。我的理由是:正如大部分朋友那样,学c是从谭浩强那本书开始的,单文件的习惯简直是深入人心。在大谈特谈之后。他老人家大概觉得不好意思,书的最后才拿出来亮下,而我这个笨蛋自以为读了那么多,已经大功告成了,也没放在心上,上面的这些废话,只想说明一点。那就是读好书是绝对必要的。

1.3节里,作者以最简单的语言回答了初学者一定会问的笨问题:

第一:很多人都会问。#include<>#include” ”有什么区别?书上的回答很明白,对头文件查找的方式不同而已。可能我们唯一不满意的是。作者没有告诉我们什么是预定义的目录,汗,看来作者还是高估了我们这些可怜的人,所谓预定义的目录就是我们通常说的系统目录。标准库文件所在的地方,再说的直接点。就是你安装编译器所在的那个目录的某个子目录。什么是当前用户目录?别玩我了,你一定知道的。除非你没用过操作系统。

第二:c++c的兼容性是大家都知道的。但是我们会很奇怪的发现当我们根据c++的标准写法写下如下句子时

include<stdio>

using namespace std;

编译器很不给面子。作者告诉我们原来c名字和c++名字是不同的。也就是说在名字空间std里根本就没有stdio这个东西。所有的c名字在c++名字中都得加个c前缀,在也证明了我在上篇笔记里说的。一上来就动手上机的一大弊端就是我们根本不知道自己在用什么。出了错当然也就莫名其妙了,

第三:由于c++c的兼容,我们也许会问:我怎么知道那个是c文件,那个是c++文件呢?看扩展名?这是个主意,但是,有个不幸的消息。作者已经多次告诉我们在不同的系统里文件的扩展名是不同的,作者告诉我们一个很好的方法:用宏,c++有个“__cplusplusc有个“__STDC__”这两个名字不会同时存在。ok,这样的话,我们#ifndef或者#ifdef就可以了,另外,作者还告诉我们四个宏,对初学者来说几呼没什么用?呵呵,多懂点也是好的,这也是作者对我们的信任,不像某些教材,,,,唉,不提也罢,什么是初学者的东西。什么不是。谁有这个权力判断呢?除了你自己,教育者的任务该是把完整的东西拿来看,取舍是学生的事情,不是吗?

除了上面这些知识外,作者还告诉我们该养成那些好习惯。比如写头文件时,该写成如下形式:

#ifndef FILENAME_H

#define FILENAME_H

//文件主体,

#endif

以便当文件包涵层次多了犯糊涂,另外这里还有个暗示:鼓励写多文件程序,这样可以避免一个文件过长难以读懂,我当年就写过一个长达1100行的文件。修改时,我自己都晕了。还有个好处是,当我们学习I/O时文件操作就成可以理解的东西了,尽管两者关系不大。但是这是一种思维习惯,如果你只写单文件的东西。你怎么理解文件外的操作呢?

还有一种习惯就是注释,我把它并到这里来写,是因为它简单,但是简单并不意味着不重要,相反,它很重要。无论在任何时候我们都不要忘记,人类能成为整个世界的主宰,是因为我们的合作能力超过了任何一种生物(不明生物除外)。而注释正是为你以后的合作提供方便,因为你的设计灵感是很容易忘记的,到时候,连自己都不知道。这段代码干嘛的?