宏定义define

来源:互联网 发布:windows to go 什么用 编辑:程序博客网 时间:2024/05/21 09:47
#define宏定义是个演技非常高超的替身演员,我们用它要慎之又慎。

const修饰的数据是有类型的,而define宏定义的数据没有类型

define宏只是简单的替换.

#define SQR(x)  x*x 
假设x是10,SQR(10)就被替换为10*10,但是当x为10+1,SQR(x)被替换为  10+1*10+1。这样就出问题了。

所以应该这么定义,多加几个括号:#define SQR(x)  ((x)*(x)) //多加几个括号,别吝啬括号。

通常用typedef定义某种类型如 int,long的别名,而不是用#define,用define会带来一些问题。。。

在用define进行宏定义时,后边不要用”//“注释文字。否则会出问题的,编译器不会将这些文字当成注释。可以另起一行再注释。



2、用宏定义一个函数时,需要在同一行上定义,如果一行不够写,需要加'\',最后一行上的变量是该表达式的返回值。
语法: #define func(x,y) ({ \
                 char a;\
                     ....
                     ....
                 a;\                  
})