预处理命令总合集。最实用的从代码中解析,超容易理解,这样你还看不懂?

简介: 预处理命令总合集。最实用的从代码中解析,超容易理解,这样你还看不懂?

首先看下列表格预处理归纳:

指令 描述
#include 它是C语言中的头文件命令,用于指定头文件嵌入源文件中。
#define 宏定义。
#undef 宏定义的终止符,用于取消已定义的宏。
#ifdef 如果宏已定义则返回真。
#ifndf 如果宏没有定义则返回真。
#if 如果条件语句成立,则编译运行下面的代码。
#else 与#if一起使用,如果#if条件不成立,则执行下面的代码。
#elif 与#if一起使用,如果#if条件不成立,当前条件成立,则执行下面的代码。
#endif 结束一个 #if……#else 条件编译块。
#error 当遇到标准错误时,输出错误消息。
#pragma

使用标准化方法,向编译器发布特殊的命令到编译器中。 


#include:  

#include<stdio.h>
int main()
{
    printf("Hello world");
    return 0;
}

我们学C语言时的第一个程序,打印hello world,头文件就是include。



#define:

#include<stdio.h>
#define NUM 3
int main()
{
     printf("宏定义后的结果:%d",NUM);   
    return 0;
}

使用宏定义就是等价于将NUM=3。



#undef:

#include<stdio.h>
#define NUM 3
#undef NUM
#define NUM 1
int main()
{
    printf("宏定义后的结果:%d",NUM);   
    return 0;
}

运行结果:

取消前一个宏定义NUM=3,重新再宏定义NUM=1。


#ifdef、#ifndef、#endif:

第一组代码:

#include<stdio.h>
#define NUM 1
int main() 
{
    #ifndef NUM   //先判断是否定义了NUM
    #define NUM 0   //定义了则不再定义,没有定义则重新定义
      if(NUM==1) 
        printf("开始定义了NUM,执行此句");  
      if(NUM==0)
            printf("开始没有定义NUM,重新定义的NUM"); 
    #endif
  return 0;  
}

运行结果:

第二组代码:

#include<stdio.h>
int main() 
{
    #ifndef NUM   //先判断是否定义了NUM
    #define NUM 0   //定义了则不再定义,没有定义则重新定义
      if(NUM==1) 
        printf("开始定义了NUM,执行此句");  
      if(NUM==0)
            printf("开始没有定义NUM,重新定义的NUM"); 
    #endif
  return 0;  
}

运行结果:

注意:一定要在最后加上#endif,否则程序会报错哦。


#if、#else:

开关游戏:

代码1:

#include<stdio.h>
#define NUM 1
int main() 
{
#if NUM  
    printf("NUM=1,开关打开,游戏开始");  
#else  
        printf("NUM=0,开关关闭,游戏结束"); 
#endif
  return 0;  
}

运行结果:

 


代码2:

#include<stdio.h>
#define NUM 0
int main() 
{
#if NUM  
    printf("NUM=1,开关打开,游戏开始");  
#else  
        printf("NUM=0,开关关闭,游戏结束"); 
#endif
  return 0;  
}

运行结果:

 

小结:#if和#else同时使用时,判断条件是一个宏定义,只需要判断一个变量的真假。与#if和#elif判断两个变量的真假不同,要区分开。

注意:一定要在最后加上#endif,否则程序会报错。



#if与#elif:

代码1及运行结果:

#include<stdio.h>
#define NUM 1
#define SUM 1
int main() 
{
#if NUM 
    printf("NUM=1,开关打开,游戏开始");  
#elif SUM
        printf("NUM=0,开关关闭,游戏结束"); 
#endif
  return 0;  
}

运行结果:

 

代码2及运行结果:

#include<stdio.h>
#define NUM 0
#define SUM 1
int main() 
{
#if NUM 
    printf("NUM=1,开关打开,游戏开始");  
#elif SUM
        printf("NUM=0为假,SUM=1为真,开关关闭,游戏结束"); 
#endif
  return 0;  
}

运行结果:

小结:要使用#if和#elif,需要两个宏定义,#elif判断是以另一个宏定义来判断,而不是用于判断#if的宏定义。

再次注意:最后要加上endif,否则程序会报错哦。


目录
打赏
0
0
0
0
0
分享
相关文章
昇腾 msmodelslim w8a8量化代码解析
msmodelslim w8a8量化算法原理和代码解析
255 5
实现一个带有昼夜背景切换的动态时钟:从代码到功能解析
本文介绍了一个使用Python和Tkinter库实现的动态时钟程序,具有昼夜背景切换、指针颜色随机变化及整点和半点报时功能。通过设置不同的背景颜色和随机变换指针颜色,增强视觉吸引力;利用多线程技术确保音频播放不影响主程序运行。该程序结合了Tkinter、Pygame、Pytz等库,提供了一个美观且实用的时间显示工具。欢迎点赞、关注、转发、收藏!
239 94
|
4月前
|
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
157 5
保单AI识别技术及代码示例解析
车险保单包含基础信息、车辆信息、人员信息、保险条款及特别约定等关键内容。AI识别技术通过OCR、文档结构化解析和数据校验,实现对保单信息的精准提取。然而,版式多样性、信息复杂性、图像质量和法律术语解析是主要挑战。Python代码示例展示了如何使用PaddleOCR进行保单信息抽取,并提出了定制化训练、版式分析等优化方向。典型应用场景包括智能录入、快速核保、理赔自动化等。未来将向多模态融合、自适应学习和跨区域兼容性发展。
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
169 20
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
196 11
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
鸿蒙登录页面设计展示了 HarmonyOS 5.0(Next)的未来美学理念,结合科技与艺术,为用户带来视觉盛宴。该页面使用 ArkTS 开发,支持个性化定制和无缝智能设备连接。代码解析涵盖了声明式 UI、状态管理、事件处理及路由导航等关键概念,帮助开发者快速上手 HarmonyOS 应用开发。通过这段代码,开发者可以了解如何构建交互式界面并实现跨设备协同工作,推动智能生态的发展。
436 10
鸿蒙登录页面好看的样式设计-HarmonyOS应用开发实战与ArkTS代码解析【HarmonyOS 5.0(Next)】
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
1763 11
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
PHP命名空间深度解析:避免命名冲突与提升代码组织####
本文深入探讨了PHP中命名空间的概念、用途及最佳实践,揭示其在解决全局命名冲突、提高代码可维护性方面的重要性。通过生动实例和详尽分析,本文将帮助开发者有效利用命名空间来优化大型项目结构,确保代码的清晰与高效。 ####
117 20

推荐镜像

更多
  • DNS
  • AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等

    登录插画

    登录以查看您的控制台资源

    管理云资源
    状态一览
    快捷访问