1,宏定义,有参宏,无参宏,宏定义实现的是定义一个符号常量;
条件编译3种方式,文件包含含义;
不带参数的宏定义;既用一个指定的的标识符来代替一个字符串; #define RUIY 10000000 把标识符定义为字符串,在进行编译预处理时,编译系统就能把程序中出现的标识符用字符串去替代,然后再对预处理后的程序进行编译; 与typedef 给系统中已存在的数据类型重新定义别名类似,但是是有区别的; typedef char * String; 使用不带参数的宏定义 #include <stdio.h> #define PI 3.1415926 int main(){ float s,r,v,l; printf("Please input radius longs:"); scanf("%f",&r); }
2,宏名一般用大写,以便于变量加以区别;
使用宏名代替字符串可以提高程序的运行效率
宏名语句后不加分号;以便于通常的C语句区别开来;
宏名定义的有效范围为从定义处起到源程序文件的末尾;
可用#undef终止宏定义的作用范围 ;
在进行宏定义时可引用以定义的宏名;
对程序中用用双引号括起来的标识符在预处理时不作字符替换,
宏定义只作字符替换,预处理时不分配内存;
void main() { printf("l=%10.4\nv=%10.4\ns=%10.4\n"); }
5,带参数的宏定义
带参数的宏定义不只是简单的字符替换,还要进行参数替换; 一般定义形式: #define 宏名标识符(参数列表) 字符串
6,条件编译
6,#if
#if condition code; #elif require code; #else code; #endif
条件编译分别可以实现:
1,代码注释,2,宏名定义判断,3,宏变量值;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY