c++笔记_头文件


前言

尽管可以在函数体内定义类,但是这样的类毕竟受到类一些限制。所以,类一般都不定义在函数体内。当在函数体外部定义类时,在各个指定的源文件中可能只有一处该类的定义。而且,如果要在不同的文件使用同一个类,类的定义就必须保持一致。


一、头文件

1.头文件作用

1.为了确保各个文件中类的定义一致,类通常被定义在头文件中,而且类所在的头文件名字应与类的名字一样。比如,string类就在名为string的头文件中定义。

2.头文件提高代码的可阅读性,比如我们需要找到这个库的接口函数,我们只需要查看头文件即可,然后跳转到对应函数定义实现文件。

2.头文件通常包含什么

头文件通常包含那些只能被定义一次的实体,如类,const和constexpr变量等。头文件也经常用到其他头文件的功能。

ps:头文件一旦改变,相关的源文件必须重新编译以获取更新过的声明。

二、预处理器概述

1.什么是预处理器

确保头文件多次包含仍能安全工作的常用技术是预处理器(preprocessor)

2.预处理器作用

预处理器是在编译之前执行的一段程序,可以部分地改变我们所写的程序。之前已经用到类一项预处理功能#include,当预处理器看到#include标记时就会用指定的头文件的内容代替#include。

3.头文件保护符

C++程序还会用到一项预处理功能是头文件保护符,头文件保护符依赖于预处理变量。

预处理变量有两种状态:已定义和未定义。

#define指令把一个名字设为预处理变量,另外两个指令则分别检查某个指定的预处理变量是否已经定义:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检查结果为真,则执行后续操作直至遇到#endif指令为止。

#ifndef SALES_DATA_H		//检查预处理变量是否定义
#define SALES_DATA_H		//把SALES_DATA_H定义为预处理变量
#include<string>
struct data{
 /***/
};
#endif					   //如果检查预处理变量为真,则执行结构体内部分

ps:预处理变量无视C++语言中关于作用域的规则。

整个程序中的预处理变量包括头文件保护符必须唯一,通常的做法是基于头文件中类的名字来构建保护符的名字,以确保其唯一性。为了避免与程序中的其他实体发生名字冲突,一般把预处理变量的名字全部大写。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页