`
andy136566
  • 浏览: 285186 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C++ Primer

 
阅读更多

2011.8.7


头文件通过inclue预处理器(通常捆绑在编译器中)指示符 而成为我们程序的一部分

#include指示符读入指定文件的内容,有两种格式:

#include<some_file.h>: 表明这个文件是一个工程文件或标准头文件,查找过程会检查预定义的目录

#include"some_file.h": 表明该文件是用户提供的头文件,查找该文件时从当前目录开始


#ifndef  #endif 检查预编译器常量在前面是否已经被定义

#ifdef    #endif 指示符判断一个预处理器常量是否已定义, 以便有条件地包含程序代码


编译c++程序时,编译器自动定义了一个预处理器名字__cplusplus        c是__STDC__

比较有同的预定义名字:__LINE__,  __FILE__,  __TIME__.  __DATE__


assert()是C语言标准库中提供的一个通用宏处理器宏

#include<assert.h>   


#include<cassert>

using namespace std;

库文件厂商用名字空间来控制全局名字空间污染(即名字冲突)问题 ,以避免他们的库污染了用户程序的名字空间


输入/输出流(iostream )库:cin  cout  cerr

文件输入/输出 (fstream )库


C++内置数据类型 :int  float  double boolean char

        标准库 : 字符串、复数、vector

在内置数据类型与标准库类的类型之间是复合类型 ,特别是指针和数组


静态内存分配 :在程序执行之前进行的

静态对象是有名字的变量,直接对其操作;动态对象是没有名字的对象,通过指针间接操作

静态对象的分配与释放由编译器自动处理。


int eval = 11;

int *p = &eval;

eval = eval + 1;

*p = *p + 1;




源文件和头文件

源文件被直接编译,也就是说源文件将直接被编译为obj文件。而头文件如果没有被任何源文件包含的话,将不会被编译。

现在很多编译器支持头文件的预编译,以提高编译效率(尤其是对于STL头文件,一堆函数在里面)


gcc编译源码四个步骤:

1:预处理 :把包含的头文件编译进来

2:编译 :检查语法错误,确定代码要做的工作

3:汇编 :把编译阶段输出的.s文件转换成二进制目标代码

4:链接 :把汇编阶段生成的.o文件链接成可执行文件



静态变量 只在第一次进入函数的时候初始化,而全局变量 是进入程序的时候就初始化了,另外,全局变量是对整个程序可见的,静态变量只在函数内可见。(如果是类的静态变量的话,倒是可以用类名加变量名访问,但是可以private,而全局变量不能设置权限


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics