C语言快速入门——使用#define让程序更易维护-该文件没有与之关联的程序来执行该操作

与变量在运行时可以通过赋值操作更改这一特性不同,常量是一种在程序执行过程中,其值不发生改变的量。我们目前介绍了int、float、char三种数据类型,与它们相对应的常量分别为整型常量、浮点常量、字符常量。我们已经在程序中大量的使用了这些类型的常量,如字面数值5、字符'a'、小数3.1415等。在使用printf函数输出一条消息时,如 "Hello, World!"时,这样的消息称为常量字符串。

#define

在数组的例子中,我们已经看到,直接使用一个字面常量使得程序后期维护比较困难,数组大小的改变,会引起多处变动。为此,我们可以使用符号常量来减轻这种负担。

符号常量是指用一个标识符代表一个常量,(回想一下变量,变量在程序的上下文中是用一个名称来标识引用,变量的名称就是标识符,常量与此同理。)在使用之前必须先定义,这是使用#define来完成的。

语法:#define 标识符 常量

常量标识符通常使用大写规则,如下面代码中的ARRAY_SIZE。

C语言快速入门——使用#define让程序更易维护

符号常量具有一次定义多次复用、一次修改多处关联自动更新的特性,同时也使程序有了更好的可读性。现在我们使用了ARRAY_SIZE常量来维护数组的大小,当数组大小发生变化时,除去数组元素必须变动之外,其余的关联操作都不必再做改变了。

只是替换

#define是一条预处理指令。预处理,即预先处理的意思,通常是在编译程序前由预处理器对程序文件进行的一种先决处理。C语言中预处理指令都以"#"开头,结束并不包含分号,因为它不是语句。(希望你能想起#include,它也是哦)。预处理指令实际上只是对值进行简单的替换。上面的程序在程序编译期间,ia[ARRAY_SIZE]会被替换为ia[7],也就是说ARRAY_SIZE最终都会被7所代替。

这个程序使用了极端的方式演示了#define作为替换的本领,并模仿有些编程语言使用BEGIN/END来表示语句组。当然,在实际的开发过程中不要这么做,过渡的包装会使程序难以阅读维护,并造成调试上的不便。语言是让我们优雅的交流,而不是更多的制造障碍。

C语言快速入门——使用#define让程序更易维护

推荐阅读