【人工智能教程】,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。
点击跳转到网站:【人工智能教程】
文章目录
- 一、预处理器
- 1. 宏定义(Macro Definition)
- 2. 文件包含(File Inclusion)
- 3. 条件编译(Conditional Compilation)
- 4. 宏取消定义(Undefining Macros)
- 5. 行控制(Line Control)
- 6. 错误和警告(Error and Warning)
- 7. 预定义的宏
- 二、相关链接
一、预处理器
C++预处理器(Preprocessor)是C++编译器的一个组成部分,它在编译之前对源代码进行处理。预处理器指令是以#
字符开始的特殊指令,它们告诉预处理器在编译之前对源代码进行某些操作,比如宏定义、条件编译、文件包含等。预处理器不是C++语言的一部分,但它对于C++编程至关重要,因为它允许程序员以更灵活和高效的方式编写代码。
以下是预处理器的一些主要功能和指令:
1. 宏定义(Macro Definition)
- #define:用于定义宏。宏可以是无参数的(像常量),也可以带参数(像函数)。
#define PI 3.14159
#define SQUARE(x) ((x) * (x))
2. 文件包含(File Inclusion)
- #include:用于包含(或插入)另一个文件的内容到当前文件中。这通常用于包含头文件(.h 或 .hpp 文件),这些文件包含了函数声明、宏定义、类型定义等。
#include <iostream>
#include "myheader.h"
3. 条件编译(Conditional Compilation)
- #ifdef、#ifndef、#endif、#elif、#if、#undef:这些指令用于基于某些条件包含或排除代码段。
#ifdef DEBUG
std::cout << "Debug mode is on." << std::endl;
#endif
#ifndef SOME_MACRO
#define SOME_MACRO
// 定义一些内容
#endif
4. 宏取消定义(Undefining Macros)
- #undef:用于取消之前使用
#define
定义的宏。
#define MAX_VALUE 100
// ...
#undef MAX_VALUE
5. 行控制(Line Control)
- #line:用于改变预处理器报告的行号和文件名。这通常用于大型项目中的错误处理,或者在生成源代码的工具中。
#line 100 "newfile.cpp"
6. 错误和警告(Error and Warning)
- #error 和 #warning:用于生成编译时的错误和警告消息。
#ifndef SOME_ESSENTIAL_FEATURE
#error "This feature is required but not defined!"
#endif
#warning "This code is deprecated and will be removed in a future version."
7. 预定义的宏
C++预处理器定义了一些预定义的宏,比如__LINE__
、__FILE__
、__DATE__
、__TIME__
等,这些宏在编译时会被替换为相应的值。
#include <iostream>
int main() {
std::cout << "File: " << __FILE__ << std::endl;
std::cout << "Line: " << __LINE__ << std::endl;
std::cout << "Date: " << __DATE__ << std::endl;
std::cout << "Time: " << __TIME__ << std::endl;
return 0;
}
二、相关链接
- Visual Studio Code下载地址
- Sublime Text下载地址
- 「C++系列」C++简介、应用领域
- 「C++系列」C++ 基本语法
- 「C++系列」C++ 数据类型
- 「C++系列」C++ 变量类型
- 「C++系列」C++ 变量作用域
- 「C++系列」C++ 常量知识点-细致讲解
- 「C++系列」C++ 修饰符类型
- 「C++系列」一篇文章说透【存储类】
- 「C++系列」一篇文章讲透【运算符】
- 「C++系列」循环
- 「C++系列」判断
- 「C++系列」函数/内置函数
- 「C++系列」数字/随机数
- 「C++系列」数组
- 「C++系列」字符串
- 「C++系列」指针
- 「C++系列」引用
- 「C++系列」日期/时间
- 「C++系列」输入/输出
- 「C++系列」数据结构
- 「C++系列」vector 容器
- 「C++系列」类/对象
- 「C++系列」继承
- 「C++系列」重载运算符/重载函数
- 「C++系列」多态
- 「C++系列」数据抽象
- 「C++系列」数据封装
- 「C++系列」 接口(抽象类)
- 「C++系列」文件和流
- 「C++系列」异常处理
- 「C++系列」动态内存
- 「C++系列」命名空间
- 「C++系列」模板