C语言宏的定义与使用方法是什么


本文小编为大家详细介绍“C语言宏的定义与使用方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言宏的定义与使用方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。#define是预处理器处理的单元实体之一#define 定义的宏可以出现在程序的任意位置#define 定义之后的代码都可以使用这个宏#define 定义的宏常量可以直接使用#define 定义的宏常量本质为字面量下面的宏常量定义正确吗?编写代码来测试:先使用gcc -E Test.c -o Test.i 进行预编译,预编译没有报错,结果如下:直接进行编译,发现 char* p2 = PATH2; char* p3 = PATH3; 报错这说明宏定义是正确的,但是编译是过不了的,只是#define PATH2 D:testtest.c#define PATH3 D:test不符合语法规范免费云主机域名。#define 表达式的使用类似函数调用#define 表达式可以比函数更强大#define 表达式比函数更容易出错强大之处其中之一就是可以求数组的大小,这是不能编写函数办到的。下面看一段宏表达式的代码:下面为输出结果,但是 s2 我们预期的结果应该是 9,m 的值我们预期的结果应该是 1,这是怎么回事呢?下面进行预编译看看代码到底是怎么运行的,输入 gcc -E Test.c -o Test.i通过上面宏定义的替换,我们很容易知道为什么结果跟我们想的不一样。宏表达式被预处理器处理,编译器不知道宏表达式的存在宏表达式用“实参”完全替代形参,不进行任何运算宏表达式没有任何的“调用”开销宏表达式中不能出现递归定义所以,下面递归定义就是错误的:宏定义的常量或表达式是否有作用域限制?(没有)下面看一个宏作用域分析的代码:下面为输出结果:作用域的概念是针对 C 语言中的变量和函数,不针对宏。宏表达式被预处理器处理,编译器不知道宏表达式的存在。下面看一个宏使用的综合示例:下面为输出结果:可以看到宏定义是很强大的,可以打印出日期,文件名,行号,不使用宏定义很难实现。读到这里,这篇“C语言宏的定义与使用方法是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: react-redux的作用是什么

这篇文章主要介绍了react-redux的作用是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇react-redux的作用是什么文章都会有所收获,下面我们一起来看看吧。 “react-redux”的作用:1、将组件分为了容器组…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 04/21 10:31
下一篇 04/21 10:31

相关推荐