当前位置: 首页 > news >正文

「C++系列」预处理器

【人工智能教程】,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

点击跳转到网站:【人工智能教程】

文章目录

  • 一、预处理器
    • 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 DEBUGstd::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;
}

在这里插入图片描述

二、相关链接

  1. Visual Studio Code下载地址
  2. Sublime Text下载地址
  3. 「C++系列」C++简介、应用领域
  4. 「C++系列」C++ 基本语法
  5. 「C++系列」C++ 数据类型
  6. 「C++系列」C++ 变量类型
  7. 「C++系列」C++ 变量作用域
  8. 「C++系列」C++ 常量知识点-细致讲解
  9. 「C++系列」C++ 修饰符类型
  10. 「C++系列」一篇文章说透【存储类】
  11. 「C++系列」一篇文章讲透【运算符】
  12. 「C++系列」循环
  13. 「C++系列」判断
  14. 「C++系列」函数/内置函数
  15. 「C++系列」数字/随机数
  16. 「C++系列」数组
  17. 「C++系列」字符串
  18. 「C++系列」指针
  19. 「C++系列」引用
  20. 「C++系列」日期/时间
  21. 「C++系列」输入/输出
  22. 「C++系列」数据结构
  23. 「C++系列」vector 容器
  24. 「C++系列」类/对象
  25. 「C++系列」继承
  26. 「C++系列」重载运算符/重载函数
  27. 「C++系列」多态
  28. 「C++系列」数据抽象
  29. 「C++系列」数据封装
  30. 「C++系列」 接口(抽象类)
  31. 「C++系列」文件和流
  32. 「C++系列」异常处理
  33. 「C++系列」动态内存
  34. 「C++系列」命名空间
  35. 「C++系列」模板

http://www.mrgr.cn/news/41555.html

相关文章:

  • 毕业设计选题:基于ssm+vue+uniapp的教学辅助小程序
  • ros2 自定义工作空间添加source
  • 【嵌入式裸机开发】智能家居入门3(MQTT服务器、MQTT协议、微信小程序、STM32)
  • 【超详细】Python、JDK、vscode安装
  • CSS盒子模型基础知识(23个案例+代码+效果图)
  • 【EXCEL数据处理】000013 案例 EXCEL筛选与高级筛选。
  • Visual Studio2017编译GDAL3.0.2源码过程
  • PHP反射机制
  • 使用rust写一个Web服务器——多线程版本
  • ARM 架构、cpu
  • 一个简单的摄像头应用程序0
  • 关于Vben Admin多标签页面缓存不生效的问题
  • latex有哪些颜色中文叫什么,Python绘制出来
  • Docker Compose 部署大模型GPU集群:高效分配与管理算力资源
  • 国庆作业1
  • 将二叉树的叶节点从左到右的顺序连成一个单链表
  • 【YOLO目标检测电梯间电动车与人数据集】共4321张、已标注txt格式、有训练好的yolov5的模型
  • 在带64位cpu的旧笔记本电脑安装了debian12 x386操作系统
  • 光通信——FTTx
  • Java - Spring框架 (ios+aop)