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

C语言 学习 宏命令(预处理) 2025年6月9日14:41:39

宏命令(预处理)

1.宏定义#define 与 取消宏定义#undef

#define 宏名 替换内容  //无类型检查 简单文本替换

 举例:
#define PI 3.14159  
//这个PI 相当于3.14159
#define MAX(a, b) ((a) > (b) ? (a) : (b))
//这是一个对比a是否大于b如果是 输出 a 反之 b 
用括号的重要性: 
错误写法
#define SQUARE(x) x * x    SQUARE(3 + 1) 会变成 3 + 1 * 3 + 1 → 结果错误
#define MAX a > b ? a : b   MAX + 1 会变成 a > b ? a : b + 1,逻辑混乱

 #undef 宏名   可以取消之前定义的宏,让宏名失效

 取消定义宏举例:
#define min 1234  //创建一个宏定义
int main(){
#ifdef min     //判断宏定义是否存在 存在输出提示字
printf(1234);
#endif#undef min    //取消一个宏定义#ifdef min    //判断宏定义是否存在 存在输出提示字
printf(5554);
#endif
}

2.#include 指令(ai提供)

场景描述
引入标准库函数如 #include <stdio.h>
分离项目结构将函数声明放入 .h,实现放入 .c
模块化开发各个模块独立编写 .h 和 .c
宏定义共享将公共宏定义放在 .h 中供多个文件使用
条件编译控制结合 #ifdef 控制不同平台功能
操作说明
#include <file.h>引入系统头文件
#include "file.h"引入自定义头文件
#ifndef / #define / #endif防止头文件被重复包含
放置位置通常放在 .c 文件开头
不能做什么不能在里面写可执行语句(如 printf()

 3.条件编译

指令说明
#ifdef MACRO如果宏 MACRO 已定义
#ifndef MACRO如果宏 MACRO 未定义
#else否则
#elif否则如果(常用于多个条件判断)
#endif结束条件编译块
#if (表达式)如果表达式为真(支持常量运算)
http://www.xdnf.cn/news/956971.html

相关文章:

  • 【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
  • 机器人模仿学习调研
  • 处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
  • Android实践:查看远程文档
  • 数据驱动证券业务精细化决策,从洞察到行动的全链路赋能
  • IBMS集成系统 结合数字孪生技术,实现建筑的3D可视化监控与智能化运维
  • prxomox 8.3-8.4更新
  • 如何在Android Studio中导出apk文件
  • [25-cv-06277]Keith律所代理昆虫画作版权图
  • docker相关(AI回答)
  • 详解快排的四种方式
  • RT_Thread——线程管理(上)
  • 【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解(回忆版)
  • 【最新案例】智能物料称重柜/生鲜称重售卖柜系统, 共享自助管理系统, 物联网应用定制开发
  • 如何删除linux空的文件夹
  • 02__C++的基本语法
  • Unity中的Mathf.Lerp
  • ArcGIS Pro+ArcGIS给你的地图加上北回归线!
  • 安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
  • 什么是EULA和DPA
  • Android Test4 Application(Context)实例的获取
  • 深入探讨渗透测试的定义、关键步骤以及实施方法
  • 《射频识别(RFID)原理与应用》期末复习 RFID第三章 编码和调制(知识点总结+习题巩固)
  • EZDML:一款国产免费的数据库建模工具
  • [25-cv-61102]SMG律所代理Fanatics 体育用品商标维权案
  • UI学习(三)
  • 嵌入式学习Day34
  • VS Code中Augment AI免费额度用尽的完美解决方案
  • CppCon 2015 学习:The Birth of Study Group 14
  • Android15默认开启无障碍服务