java宏定义_C语言基础之宏定义(附代码)

C语言基础之宏定义(附代码) 官网

功能介绍 分享C语言、C++语言在Unix/Linux环境下编程的基础知识,C/C++语言开发经验、开发心得分享及总结。实际项目用到的C/C++以及Java案例、demo分享。C/C++以及Java开发的各种干货分享。 2017-10-31 C语言基础之宏定义 宏定义: 是C语言提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解。#define预处理指令可以用来定义宏。 宏定义的形式,分为 带参数和不带参数 的宏定义: 1. 不含参数的宏定义 : #define 标识符 字符串 例如: #define PI 3.14 这里的标识符是宏的名称,字符串可以是常数、表达式、格式串。 这里需要注意以下几点: 1) 宏名称通常全由 大写英文字母 构成,里面不能有空格,用宏替换数字的时候 不要使用赋值操作符 ,编译器会把程序中所有宏名称替换成它所代表的数字; 2)宏定义是用宏名来表示一个字符串,在宏展开时,又以该字符串取代宏名,这只是一种 简单的代换 ,字符串中可以是任何字符、常数、表达式,预处理程序不对它作任何检查。如有错误,只能在编译已被宏展开后的的源程序时发现; 3)宏定义不是说明或语句,在行末 不需加分号 ,若加了分号则连分号一起置换。; 4)宏定义必须写在函数之外,其 作用域为宏定义命令起到源程序结束 。如要终止其作用域可使用#undef命令; 2. 带有参数的宏定义: #define 宏名(参数表) 字符串 例如: #define M(y) y*y+3 它的作用是指定标识符M(y)来代替表达式y*y+3。在编写源程序时,所有的y*y+3都可以由M(y)代替。而对源程序作编译时,将先由预处理程序进行宏代换,即用y*y+3表达式去置换所有的宏名M(y),然后再进行编译。 这里需要注意以下几点: 1)宏的参数不一定代表数字,所以 宏参数没有类型 ,宏可以有多个参数,这个时候需要用逗号把不同参数分隔开, 编译器采用二次替换的方式处理带参数的宏; 2) 宏不能使用自己的存储区实现和函数之间的数据传递, 宏没有返回值 ; 3) 因为宏没有返回值,所以不能 保证优先计算宏内部的操作符 ,所有能当作数字使用的宏必须写在一对小括号里; 测试代码: 测试结果为: 另外,可以在编译命令中使用 -D 选项指定宏名称代表的数字。 测试代码如下: 测试结果为: 小知识: #是一个宏操作符,它可以把一个宏的参数转换成字符串字面值; ##也是一个宏操作符,它可以把一个代表标识符的宏参数和其他内容连接,得到一个新的标识符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值