C++中常用的预处理指令
C++中常用的预处理指令:
1. #include
用途:将指定的头文件内容包含到当前源文件中。
示例:
#include <iostream> // 用于包含标准输入输出流的头文件,以便使用std::cout、std::cin等功能。 #include "myheader.h" // 用于包含自定义的头文件。编译器会首先在当前源文件所在目录查找自定义头文件。
2. #define
用途:定义常量、宏等。
常量定义示例:
#define PI 3.14159 // 定义了一个名为PI的常量,在预处理阶段,代码中所有出现PI的地方都会被替换为3.14159。
宏定义示例:
#define MAX(a,b) ((a)>(b)?(a):(b)) // 定义了一个宏MAX,用于返回两个数中的较大值。
在预处理时,例如int m = MAX(3, 5);会被替换为int m = ((3)>(5)?(3):(5));。不过要注意宏可能存在一些副作用,使用时需谨慎。
3. #if、#else、#elif、#endif
用途:用于条件编译。根据预定义的条件决定哪些代码被编译。
示例:
#define DEBUG 1 #if DEBUG std::cout << "This is debug mode." << std::endl; #else std::cout << "This is normal mode." << std::endl; #endif
这里如果DEBUG被定义为1(非零值),则输出“This is debug mode.”;否则输出“This is normal mode.”。#elif相当于else if,可用于添加更多条件分支。
4. #ifdef、#ifndef、#endif
用途:
#ifdef:判断某个标识符是否已经被定义,如果已定义则编译后续代码。
#ifndef:判断某个标识符是否未被定义,如果未定义则编译后续代码。常与#endif配合用于头文件保护。
示例:
#ifndef MYHEADER_H #define MYHEADER_H // 这里是头文件内容,如函数声明、类定义等 #endif
这是一种常见的防止头文件被多次包含的方式。
5. #pragma
用途:向编译器发出特定的指令。不同编译器对#pragma的支持有所不同。
示例:
在一些编译器中,#pragma once可用于确保头文件只被包含一次,功能类似于上述的#ifndef - #define - #endif头文件保护,但更为简洁。不过并非所有编译器都支持#pragma once。例如:
#pragma once // 头文件内容
C++编程语言基础
- C++:从入门到工作的教程
- 这是我的第一个 C++程序!
- C++中main函数有什么作用?
- C++中 #include 指令的作用
- C++中常用的预处理指令
- C++中 iostream 头文件定义了什么
- C++名称空间(namespace)
- C++标准库中 std 命名空间定义了些什么
- C++常用的头文件
- C++源代码的发布方式
- C++变量名的定义、变量的作用、使用规范
- C++的关键字列表
- C++数据类型:整型(整数类型)
- 二进制补码、原码、反码
- C++数据类型:char字符型(整数类型)
- ASCII码表及C++字符函数库(cctype)
- 计算机汉字编码
- C++数据类型:bool类型(整数类型)
- C++中 const 限定符
- C++数据类型:浮点数
- C++运算符:算术运算符
- C++运算符:类型转换规则
- 计算机数据存储大小端模式
- C++运算符:位运算 与 bitset类库
- C++运算符:关系运算符与逻辑运算符
- C++流程控制:顺序、选择、循环、跳转语句
- C++函数的定义、参数传递、重载、嵌套
- C++数组:一维、二维、多维数组的运用
- C-style字符串、库函数 与 std::string对象
- C++数据类型:结构体(struct)
- C++数据类型:联合体(union)
- C++数据类型:枚举(enum)
- C++数据类型别名:typedef
- C++指针
- C++内存操作符:new分配 与 delete释放
- C++标准模板库(STL)容器、算法、迭代器
- C++标准模板库(STL)vector顺序容器
- C++标准模板库(STL)array固定容器
- C++标准模板库(STL)list双向链表容器
- C++标准模板库(STL)deque双端队列
- C++标准模板库(STL)集合 set 关联容器
- C++标准模板库(STL)map关联容器
- C++标准模板库(STL)unordered_set
- C++标准模板库(STL)unordered_map
- C++标准模板库(STL)algorithm算法库
- C++文件操作
- C++数学库(cmath)数学常量与数学函数
- C++模板:函数模板、类模板
- C++与SQLite3联合打造实用的应用程序
- C++实战开发中常用的库(概述)
- 第二部分:C++面向对象编程
- C++:类的定义与声明、类对象应用
- 第三部分:数据结构与算法(概述)
- 第一部分:C++语言简介与学习路线