C语言之define

来源:互联网 发布:域名绑定ip 端口 编辑:程序博客网 时间:2024/06/03 19:51

1. 不带参数的宏定义

        一般一个程序里,要使用某个常量的话,最好采用define进行宏定义,方便代码的修改,只要在一处修改,整个程序就完成了修改,十分方便:
        #define PI 3.141592654
        例如上面的例子,对于圆周率PI的值,用define宏定义之后,在程序中PI就代表3.141592654,下次要换个值,直接改宏定义即可,define一般只是简单的字符替换。

2. 带参数的宏定义

        有时候,希望宏定义做一点小的运算,毕竟写成函数的话,需要在栈上开辟一个空间,以及出栈操作,消耗一定时间,于是采用带参数的宏定义完成一些简单操作:
        #define MULTIPLY(a,b) a*b
        c = MULTIPLY(2,3);
        其实上述定义还是有一点小问题的,对于输出是表达式,可能运算的顺序就不是如你所愿了,例如:
        d = MULTIPLY(a+b, a+b);
        本来是想算(a+b)*(a+b),然而define只是简单的字符替代,变成了d = a+b*a+b,当然是错的了,需要将宏定义改成:
        #define MULTIPLY(a,b) (a)*(b)

3. 防止文件的重复包含

        一般对于文件包含操作,在被包含的文件中需要进行如下操作:
        ifndef Random_H
        #define Random_H
        // user codes
        #endif
        也就是说,只要该文件被包含了一次,Random_H就会被定义,一旦被定义,中间的用户代码不会被重复包含。
0 0
原创粉丝点击