C++ Primer学习笔记:入门至预处理器

需积分: 3 1 下载量 134 浏览量 更新于2024-08-01 收藏 142KB DOC 举报
C++ Primer 学习笔记 C++ Primer 是一本经典的C++编程语言学习书籍,这本笔记主要涵盖了C++的基础概念和技术要点。学习C++的初学者和进阶者都可以通过这份笔记来深入理解这门语言。 1、C++程序结构 C++程序由一个或多个源文件组成,每个源文件可以包含函数定义和数据声明。源文件的扩展名通常是.cpp,而头文件通常以.h为扩展名。头文件用于包含函数原型、类声明和其他预编译信息。C++标准库中的函数和类型位于`std`命名空间内,因此在使用这些库元素时需要使用`std::`前缀,或者通过`using`指令引入。 例如: ```cpp #include <iostream> // 引入标准输入输出流库 using namespace std; // 使用std命名空间,无需std::前缀 int main() { cout << "Hello, World!" << endl; return 0; } ``` 2、预处理器指示符 预处理器是编译过程的一部分,负责处理以`#`开头的指令。`#include`指示符用于将其他文件的内容插入到当前文件中。有两种形式:`#include <file>`用于引入标准库头文件,编译器会在预定义的路径中查找;`#include "file"`用于引入用户自定义的头文件,从当前文件的目录开始查找。 3、防止头文件重复包含 为了避免头文件被多次包含,可以使用`#ifndef`、`#define`和`#endif`组合,创建所谓的“头文件保护”。例如: ```cpp #ifndef BOOKSTORE_H #define BOOKSTORE_H class Bookstore { // 类的定义 }; #endif // BOOKSTORE_H ``` 在这里,`#ifndef`检查`BOOKSTORE_H`是否已被定义,如果没有,就定义它并包含头文件的内容。下次遇到相同的`#ifndef`时,由于`BOOKSTORE_H`已被定义,所以头文件内容不再被处理。 4、`#ifdef`指示符 `#ifdef`用于检查预处理器常量是否已定义,如: ```cpp #ifdef DEBUG // 在DEBUG已定义的情况下编译这部分代码 // 可以用于调试代码 #endif ``` 这允许在编译时有条件地包含或排除特定的代码段。 5、编译器标志 在编译时,可以使用 `-D`标志定义预处理器常量,如`-DBUILD_DEBUG`,这将使`BUILD_DEBUG`在编译过程中被视为已定义。 C++ Primer 学习笔记提供了关于C++编程的基础知识,包括程序结构、预处理器、头文件的使用以及条件编译等核心概念。通过学习这些内容,读者能够更好地理解和编写C++程序,并逐步掌握这门强大的编程语言。