现在的位置: 首页 > 综合 > 正文

c++ primer(第四版)学习札记 8-23

2014年10月20日 ⁄ 综合 ⁄ 共 1194字 ⁄ 字号 评论关闭

1、容易混淆的问题:ex2_31
(a) extern int ix = 1024;
(b) int iy;
(c) extern int iz;
(d) extern const int &ri;
确定以上四个,哪些是定义,哪些是声明
这就决定了语句放置的位置,是在头文件中亦或是c++文件中,因为头文件是声明,不是定义。如果多处定义,将会造成link错误
(a)很明显是定义,因为都赋了初值了
(b)没有extern,所以也是定义,变量在声明的同时也被系统默认赋了初值
(c)声明,用extern来声明使用在其他文件中定义的变量
(d)有点不敢确定,不过如果这个语句正确,那么引用肯定已经赋了初值,所以,这应该是对其他文件中的一个对常量的引用的声明。

2、ex2_33 要求提高编译器的警告等级,看看有什么效果
这个问题其实也可以不研究的,只是那天在VC的选项中看到了编译警告等级,所以来试试在命令行下如何实现
不过也花费了挺多时间的,后来还是自己试出来的,google也不是万能的啊
在cmd中敲入cl/?后,会出现一些编译的可选项(option)
cl [ option... ] filename... [ /link linkoption... ]
然后找到了/W<n>,可以设定编译警告级别,默认的时候n=1,我记得VC默认是3的,于是乎就敲cl /W<4> ex1_8.cpp居然告诉我找不到文件!觉得奇怪,在google一阵子没有结果后就开始乱试,看来程序编多了,有些事情都忘记了,其实只要敲cl /W4 ex1_8.cpp就可以了,唉,居然当作cout那样的形式了,狂晕中。。。
研究的结果是,1-3级的效果都是一样的,仅给了我一个warning而已,而4级就有点可怕了,一下子跳出了几十个(夸张)warning,很多都是系统库的warning,暂时还不明白,这些警告的作用

3、防止重复include头文件:
#ifndef SALESITEM_H
#define SALESITEM_H
// Definition of Sales_itemclass and related functions goes here
#endif
这样就可以避免了,如果该头文件再次被include的时候,碰到ifndef时就会跳过了。

4、""和<>的区别
#include <standard_header> 表示系统的头文件,在系统目录中找
#include "my_file.h" 表示自定义的头文件,在本地目录中找

第二章结束 变量和基本类型

5、进入第三章,就是区别c和c++的地方了,以前学数据结构的时候,书上说,表现ADT(抽象数据型),用c++最合适,后来在BS的DNE上也看到这句话,也就是说,c++从基本类型中发展出了很多新类型,更加方便程序的编写,c++的一切才刚刚开始。。。
——end—— next:3.2 Library string Type

PS:本来想看完string的,但是太长了,明天继续吧~

抱歉!评论已关闭.