「C++系列」预处理器

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

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

一、预处理器

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;
}

在这里插入图片描述

二、相关链接

  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++系列」模板

猜你喜欢

转载自blog.csdn.net/xuaner8786/article/details/142597423