手记

C语言中,宏定义“define”的一种有趣的用法

在C语言中,宏定义也是一种很重要的概念。可以使用“#define”来定义一个常量,也可以用“#define”来实现一些功能。这一篇文章中,我们将介绍一下,在C语言中,使用宏定义“#define”实现的一个小的例子。

我们可以借助“#define”,将很多关键字和函数,甚至是标点符号,来改成别的名字。比如:如下程序所示:

在C语言程序中,宏定义“define”的一种有趣的用法

上述程序,突然一看,似乎已经与C语言代码差距较远。在第15行,隐隐约约地看到了“hello world”字样,如果运行以上的程序,最终,程序的执行结果是:

在C语言程序中,宏定义“define”的一种有趣的用法

当运行程序时,屏幕上显示出了“hello world”字样,其实,上述程序,就是取代了最基础的C语言程序:在屏幕输出“hello world”。原C语言程序,如下图所示:

在C语言程序中,宏定义“define”的一种有趣的用法

上述C语言程序,就是使用printf函数,在屏幕上输出“hello world”,在示例代码1中,代码变得认不出了,是因为在第3行到第9行,使用了“#define”宏定义语句,将“int”、“void”、“main”、“printf”、“return”等字样,替换为了不同长度的下划线。

宏定义,其实就是在程序编译的时候,将宏替换为相关字符。如在代码1中,一个下划线,代指“int”字样;两个下划线,代指“main”字样;三个下划线,代指“void”字样;六个下划线,代指“printf”字样;七个下划线,代指“return”字样。

在代码1中,还将左小括号和右小括号,使用下划线代替了。当然,也可以将“hello world”这个字符串本身,使用其他字符来进行替代。

在C语言程序中,宏定义“define”的一种有趣的用法

在使用“#define”进行将相关字样修改后,C语言就很难被认出了。这是“#define“宏定义的一个很有趣的小实验。

“#define”宏定义的很重要的作用,就是可以定义一个宏,然后,在代码中使用这个定义的宏,使得代码在修改的时候,“一处修改,多处生效”。

通过上述这个小实验,我们就能进一步体会到,使用宏,可以替代程序中的一些字符串,甚至是可以替代C语言自身的关键字。



作者:轻松学习C语言
链接:https://www.jianshu.com/p/417ff2630afd


0人推荐
随时随地看视频
慕课网APP