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

C语言预处理指令如#endif

正文

C 语言预处理指令是以 # 开头的指令,由预处理程序(预处理器)操作,虽不属于 C 语言语法,但扩展了 C 语言的功能。

在程序编译前,预处理器先处理源程序中的预处理指令,其输出再交给编译器进行语法检查等后续操作。

  1. 文件包含#include 是最常用的预处理指令,用于将指定文件的内容嵌入到当前源文件中。格式有两种:
    • 尖括号形式:如 #include <math.h> ,预处理器直接到系统目录对应文件中搜索 math.h 文件,系统提供的头文件一般采用该方式。
    • 双引号形式:如 #include "cal.h" ,首先到当前工作目录下查找该文件,若未找到,再到系统目录下查找,自定义头文件一般采用此方式
  2. 宏定义
    • 定义宏 #define:可定义无参数宏和带参宏。无参数宏常用于定义符号常量,如 #define pi 3.1416 ;带参宏如 #define S(a, b) a * b 。
    • 宏删除 #undef:用于删除已定义的宏,如 #undef pi ,删除之前对 pi 的宏定义。

3.条件预处理 

#include <stdio.h>
#if 1 < 0
#define width 500
#elif 2 > 3
#define width 600
#else
#define width 666
#endif

int main() {
    printf("%d", width);
    return 0;
}

在这个例子中,#if#elif#else 和 #endif 搭配使用。由于 1 < 0 和 2 > 3 都为假,所以最终 width 被定义为 666 ,程序运行时会输出 666 

#endif是结束标识符 

4.

#include <stdio.h>

#define DEBUG // 定义DEBUG宏

int main() {
#ifdef DEBUG
    printf("Debug mode: This is a debug message.\n");
#endif
    printf("This is a normal message.\n");
    return 0;
}

上述代码中,定义了 DEBUG 宏。#ifdef DEBUG 会判断 DEBUG 宏是否被定义,如果定义了,就会编译 printf("Debug mode: This is a debug message.\n"); 这行代码,所以程序运行时会输出调试信息和正常信息。如果注释掉 #define DEBUG 这一行,DEBUG 宏未定义,那么调试信息就不会被编译和输出。


http://www.kler.cn/a/562675.html

相关文章:

  • TCP初始化序列号为什么要不一样
  • header在spring boot中解析
  • 工厂方法模式:思考与解读
  • 企业级大模型应用的Java-Python异构融合架构实践
  • 【机器学习】强化学习(2)——捋清深度强化学习的思路
  • 【数据结构初阶第十五节】堆的应用(堆排序 + Top-K问题)
  • 用AI写游戏3——用java实现坦克大战游戏1
  • docker下搭建redis集群
  • 九、数据治理架构流程
  • AI 百炼成神:逻辑回归, 垃圾邮件分类
  • Selenium 调用模型接口实现功能测试
  • Elasticsearch面试宝典【刷题系列】
  • Python游戏编程之赛车游戏6-2
  • 【大模型系列】使用docker安装向量数据库Milvus问题备忘
  • 2025系统架构师(一考就过):案例之三:架构风格总结
  • 《论湖仓一体架构及其应用》审题技巧 - 系统架构设计师
  • 《Keras 3 单眼深度估计》:此文为AI自动翻译
  • 数据库之MySQL——事务(一)
  • React进阶之React核心源码解析(三)
  • 力扣827. 最大人工岛