c语言宏定义的使用方法

本文介绍了C语言中的宏定义,包括简单宏、带参数的宏、宏的使用注意事项和常见用法。强调了宏定义在简化编程、提高可读性方面的帮助,同时也指出宏可能导致的错误和解决方案,如括号使用、分号问题和条件编译。提倡使用const、typedef和函数替代宏定义,以提高代码质量和可维护性。
摘要由CSDN通过智能技术生成

在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性。

当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做法。由于宏(特别是带参数的宏)可能是程序中错误的来源,所以一些程序员更喜欢使用大写字母来引起注意。

简单宏定义

无参宏的宏名后不带参数,其定义的一般形式为:

#define 标识符 字符串

// 不带参数的宏定义#define MAX 10

注意:不要在宏定义中放置任何额外的符号,比如“=”或者尾部加“;”

使用#define来为常量命名一些优点:

程序会更易读。一个认真选择的名字可以帮助读者理解常量的意义;

程序会更易于修改。我们仅需要改变一个宏定义,就可以改变整个程序中出现的所有该常量的值;

可以帮助避免前后不一致或键盘输入错误;

控制条件编译;

可以对C语法做小的修改;

带参数的宏

带参数的仍要遵循上述规则,区别只是宏名后面紧跟的圆括号中放置了参数,就像真正的函数那样。

#define 《宏名》(《参数列表》) 《宏体》

注意参数列表中的参数必须是有效的c标识符,同时以,分隔

算符优先级问题:

#define COUNT(M) M*Mint x=5;print(COUNT(x+1));print(COUNT(++X));//结果输出:11 和42 而不是函数的输出36

注意:

预编译器只是进行简单的文本替换,COUNT(x+1)被替换成COUNT(x+1 x+1),5+15+1=11,而不是36

CUNT(++x)被替换成++x*++x即为6 7=42,而不是想要的66=36,连续前置自加加两次

解决办法:

用括号将整个替换文本及每个参数用括号括起来print(COUNT((x+1));

即便是加上括号也不能解决第二种情况,所以解决办法是尽量不使用++

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值