使用宏时需注意!

简介: 基本格式:#define 完全代替的内容,相当于复制粘贴#include #define words "%d", n int main(){ int n = 102...

基本格式:#define <名> <值>
<名>完全代替<值>的内容,相当于复制粘贴

#include <stdio.h>
#define words "%d", n 

int main(){
    int n = 1024;
    printf(words);//相当于printf("%d", n);
    return 0;
}

当<值>内容为多行时,需在行末加 \ 用以连接下一行

#include <stdio.h>
#define words "%d", n 
#define exmple int n=9;\
               printf(words);\
               return 0;

int main(){
    exmple
    /*warning:不需要加;(在if_else语句中多余的;将导致bug)*/
}

带参数的宏,就相当于函数,但是由于它本质是复制粘贴,所以会造成编译时代码量大,但是对程序员说定义和使用宏比函数来的更简洁方便(当然因人而异)
宏在编译时编译器不会做类型检查,因此为了安全,使用带参数的宏一切都要带括号

#include <stdio.h>
#define func_1(x) (x*5)
#define func_2(x) (x)*5
#define func_3(x) ((x)*5)

int main(){
    printf("%d", func_1(2+3));
    //输出:17     相当于printf("%d", (2+3*5))
    printf("%d", 50/func_2(2+3));
    //输出:50     相当于printf("%d", 50/(2+3)*5) 
    printf("%d", func_3(2+3));
    //输出:25     相当于printf("%d", ((2*3)*5))
    return 0; 
}
目录
相关文章
|
6月前
|
C语言
Makefile模式规则与自动变量
Makefile模式规则与自动变量
44 0
|
15天前
|
存储 编译器 程序员
结构体对齐规则对程序的性能有何影响?
结构体对齐规则是指编译器为了提高内存访问效率,按照特定规则在内存中分配结构体成员的位置。合理的对齐能减少内存访问次数,提升程序运行速度;反之,不当的对齐可能导致内存浪费和性能下降。
|
3月前
|
测试技术
分享两个在开发中需注意的小点
分享两个在开发中需注意的小点
23 0
|
4月前
|
存储 前端开发 Java
若依修改----数据字典,可以用于维护系统中常见的静态数据,为什么不写死,用字典维护?数据字典的好处是一个地方编写数据,在多个地方,复用他,静态选项这里填完,换其他,用户性别这里的男女,就转成而来字典
若依修改----数据字典,可以用于维护系统中常见的静态数据,为什么不写死,用字典维护?数据字典的好处是一个地方编写数据,在多个地方,复用他,静态选项这里填完,换其他,用户性别这里的男女,就转成而来字典
|
4月前
artts升级版本后常见的编译错误(定期更新......)
artts升级版本后常见的编译错误(定期更新......)
99 0
|
5月前
|
运维 Serverless API
函数计算产品使用问题之访问某个函数,不是预留实例,如何不让它销毁掉
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
分布式计算 DataWorks 数据处理
DataWork数据处理问题之属性覆盖掉如何解决
DataWork数据处理是指使用DataWorks平台进行数据开发、数据处理和数据治理的活动;本合集将涵盖DataWork数据处理的工作流程、工具使用和问题排查,帮助用户提高数据处理的效率和质量。
【小白学算法】10.递归的调用机制、使用时要注意的规则
【小白学算法】10.递归的调用机制、使用时要注意的规则
【小白学算法】10.递归的调用机制、使用时要注意的规则
|
XML 安全 Android开发
【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )
【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )
288 0
【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )
|
存储 SQL JSON
如何不改表结构动态扩展字段?
痛点 软件行业唯一不变的就是变化,比如功能上线之后,客户或 PM 需要对已有的功能增加一些合理的需求,完成这些工作必须通过添加字段解决,或者某些功能的实现需要通过增加字段来降低实现的复杂性等等。
732 0
如何不改表结构动态扩展字段?