符号常量的优点
发布日期:2021-07-01 04:36:46 浏览次数:2 分类:技术文章

本文共 2054 字,大约阅读时间需要 6 分钟。

       符号常量是一个常量,是不变量,所以,在编译的时候,就把符号常量出现的地方,替换为符号常量对应的常量。符号常量一般用户定义一个全局使用的数据,而且要改变该数据的时候,只需要改变符号常量的值,代码中引用符号常量的地方,都会把值相应修改过来。如下是一个测试的例子。

#include <stdio.h>            //包含头文件, 为了使用printf()函数;

#define A 100                   //定义符号常量A, 代表100数值;

#define name 'C'               //定义符号常量name, 代表字符'C'

int main()                           //定义程序的主函数, 就是程序的入口地址;

{                                        //主函数的开始标记;

       int x, y, z;            //定义int类型变量

       x = A;                  //把符号常量A的值赋给x变量;

       y = x + A;            //y变量的值为x变量的值加上符号常量的值;

       z = y + A;            //z变量的值为y变量的值加上符号常量的值;

       printf("A = %d\n", A);

       printf("x = %d, y = %d, z = %d\n", x, y, z);

       return 0;                      //返回结束状态;

}                                        //主函数的结束标记;

 

       程序的运行结果如下:

mylinux@ubuntu:~/src/test$ gcc test.c -o exe

mylinux@ubuntu:~/src/test$ ./exe

A = 100

x = 100, y = 200, z = 300

       可以看到,x, y, z 变量的值,相差100,这个100就是符号常量A的值。那么,如果我们想设置x, y, z 变量的值相差500,我们只需要修改符号常量A的定义为:

#define A 500

       那么,在编译代码的时候,就把符号常量A出现的地方,使用500这个数值来代替,所以,就有:

X = 500;

Y = x + 500;

Z = y + 500;

       所以,符号常量的一个优点是:修改符号常量的值,在代码中所有引用符号常量的地方,都相应引用修改后的符号常量值。

       下面讲解一个知识点,初学者可以跳过。当学习了if选择语句和预编译之后,才可以理解该知识点的讲解。

       符号常量还有一个很大的优点,就是“选择性编译代码”,因为符号常量是在编译的时候,把符号常量替换为它代表的值。所以,配合#if宏编译,可以选择编译某些代码。例如,我们开发一个程序,要求兼容linux和windows操作系统平台的运行,那么,就需要在编译代码的时候,选择编译linux系统下的代码还是windows系统下的代码。如下是一个测试的例子。

#include <stdio.h>            //包含头文件, 为了使用printf()函数;

#define sys_linux 1           //定义符号常量sys_linux代表数值1;

int main()                           //定义程序的主函数, 就是程序的入口地址;

{                                        //主函数的开始标记;

#if sys_linux                      /*条件编译, 如果sys_linux为真, 则执行if后面语句, 否则执行else后面语句*/

       printf("linux system!\n");

#else

       printf("windows system!\n");

#endif

       return 0;                      //返回结束状态;

}                                        //主函数的结束标记;

 

       程序运行结果如下:

mylinux@ubuntu:~/src/test$ gcc test.c -o exe

mylinux@ubuntu:~/src/test$ ./exe

linux system!

       可以看到,我们定义了符号常量sys_linux,它代表的常量值是1。所以,在 #if 预编译条件中,就是 #if 1 成立,所以,执行linux系统下的代码:

printf("linux system!\n");

       那么,当我们想编译该系统在windows操心系统下运行的时候,就是需要编译windows系统下的代码,所以,可以修改符号常量的定义为:

#define sys_linux 0

       此时,#if 0 成立,执行 #else 后面的代码。所以,通过配置sys_linux 符号常量的值为零和非零,我们可以定义编译器选择编译linux系统下的代码还是windows系统下的代码。

       针对这个问题,我们可以更深入地思考:如果我们要编译该程序在linux系统下运行,也要编译它在windows系统下运行,就是需要编译两个版本。那么,每次编译的时候,都要去修改sys_linux符号常量的值,这样确实很不方便!

       那么,GCC在编译代码的时候,可以指定符号常量的值。在这里我们介绍GCC在编译的时候,怎么样设置符号常量的值,就是通过-D选型来定义。如下是一个测试例子。

更多的交流可以加QQ:1523520001,微信:13926572996,备注:linux编程;

学习、分享更多的linux C/C++ 编程知识。

转载地址:https://mylinux.blog.csdn.net/article/details/89204677 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:常类型变量
下一篇:常量与符号常量

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年05月01日 06时58分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章