重读C/C++笔记(二)

来源:互联网 发布:tensorflow python 编辑:程序博客网 时间:2024/05/23 20:29

一、C++中的extern关键字

      extern其实是用来区分变量和函数的声明与定义的关键字。而不应只从字面上理解为用来定义“外部的”变量和函数。

 

二、C++中的include预编译命令

      最多人回答,但也最容易回答不清的是:include后跟尖括号,与双引号的区别。一般都知道:

      include <XXX.h>表示从系统所指向的当前目录开始搜索。

      include "XXX.h"  表示从当前源文件目录开始搜索相应的XXX.h文件,在搜索不到的情况下,再转入到系统所指向的当前目录中搜索。

 

     但对于什么是系统所指向的目录,大多没给出明确的解析,《在c++编程思想》只是笼统地说“...这种设置寻找路径的机制随机器、操作系统、C++实现的不同而不同,要视具体情况而定。”

 

     假设使用的是windows操作系统,用vc作为开发工具的话,在设置系统“环境变量”的对话框的“用户变量”栏里,有一个名为“include”的变量。这个变量的值所包含的一系列的路径,就是前面所说的“系统当前目录”。当在windows下安装相应的VC集成开发工具时,安装程序会自动将编译器所要用到的包含标准头文件的目录,添加到include变量的值(同时包含多个目录)中。

另外在VC这个集成工具中,以VC6.0为例,其Tools->Options下的Directories页内,可添加设置include目录,帮助扩展编译器的搜索范围,可看作系统目录的一个延伸。

与此相应的两者都有一个lib目录,一般用来指向编译时所需的标准函数库所在路径。

 

当在include中使用相对路径时,如果在<> 内使用相对路径,其当前目录就是上面所说的“系统当前路径”。如果在“”内使用相对路径,其当前目录就是包含了include预编译指令的.cpp文件所处的路径。

 

在include中正确使用<>和""有助于加快编译速度。如果要包含的头文件是系统提供的标准库头文件,最好使用<>,如果使用的是自定义的头文件,那么应该直接使用""。

 

 

三、链接的过程

 

1、工程中要链接多个库文件时,要注意它们之前是否有依赖关系,以此决定它们在设置选框中的先后顺序。因为链接器是从左向右依次进行链接的。

 

2、链接时,只是将库文件中要用到的模块加入到可执行文件中,而不是将整个.lib链接进来。

 

3、所有可执行文件,都有一个启动模块。它包含了对程序的初始化例程。是由链接器在链接时自动加入的。

原创粉丝点击