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

c语言学习27宏定义条件编译

1类型重定义 typedef

        typedef关键字

属性:关键字

功能:将数据类型重新定义别名  (数据类型        别名)

格式:typedef数据类型名  别名;

例子:typedef unsigned char u8;

位置:标准位置应该放在工程的.h文件

          没有.h文件放在主函数上面

好处:写复杂数据类型更方便

#include <stdio.h>

typedef  unsigned char u8;  //不一定都用u8  有的用uint8_t

typedef  unsigned short u16;

typedef  unsigned int u32;

使用场景:对结构体类型重命名

2宏定义#define

#define 预处理

        属性:预处理

        功能:在预处理的时候,将程序中的语句或表达式  重命名(别名)

格式:

                不带参宏定义

                带参宏定义

格式: #defind  别名 要宏定义的内容   //别名在前  没有分号  要宏定义的内容加括号

说明:宏名用大写

例子:#define LED_ON  (GPIO->&=~(1<<4))

位置:放在.h文件中

        放在.c最上面

好处:使程序简单,更直观,方便程序维护

使用场景:传感器功能码,特殊功能等等

分类:标准宏定义

           带参宏定义

                格式:#define  别名(参数)  (宏定义内容)

                例子:#define MM(a,b)  (a+b*a)

3条件编译

说明:

        条件编译要跟条件执行(选择结构)区分开;

条件编译:根据数据决定是否编译代码

条件执行:根据条件决定是否执行代码

功能1:按照不同的条件去编译不同的程序部分,因此产生不同的目标代码文件。节省代码存储空间。

格式:

#define VL

int main(void)

{

#ifdef VL

        程序1

#else

        程序2

#endif

   return 0;

}

#ifdef VL

        printf("版本1界面\n");

#endif

#ifdef VK

        printf("版本2界面\n");

#endif

#ifdef VJ

        printf("版本3界面\n");

#endif

#ifdef VH

        printf("版本4界面\n");

#endif

功能2:条件编译防止代码重复编译

#ifndef 标签名

#define 标签名

#endif

http://www.lryc.cn/news/489935.html

相关文章:

  • 理论结合实践:用Umami构建网站分析系统
  • Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线
  • 移动充储机器人“小奥”的多场景应用(上)
  • 已解决wordpress提示正在执行例行维护,请一分钟后回来
  • DDR3脚位解析,class分类
  • 【深度学习|目标跟踪】DeepSort 详解
  • 快速图像识别:落叶植物叶片分类
  • MTK Android12 user版本MtkLogger
  • Python数据结构day2
  • 后台通用tag面包屑
  • oracle数据恢复—通过拼接数据库碎片的方式恢复Oracle数据的案例
  • node.js fluent-ffmpeg 桌面推流
  • AWS的流日志
  • 大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)
  • Qt入门1——认识Qt的几个常用头文件和常用函数
  • ElasticSearch学习篇17_《检索技术核心20讲》最邻近检索-局部敏感哈希、乘积量化PQ思路
  • 在 Sublime Text 中直接预览 Markdown 文件
  • 分词器的概念(通俗易懂版)
  • 速通前端篇 —— CSS
  • 数据库表设计范式
  • 经济增长初步
  • 【架构】主流企业架构Zachman、ToGAF、FEA、DoDAF介绍
  • 时间请求参数、响应
  • PyTorch图像预处理:计算均值和方差以实现标准化
  • slice介绍slice查看器
  • Android音频采集
  • 通过轻易云平台实现聚水潭数据高效集成到MySQL的技术方案
  • 类和对象( 中 【补充】)
  • 如何使用gpio模拟mdio通信?
  • C# 中的事件和委托:构建响应式应用程序