C++之define

1.宏定义

1)关键字 #define 

表示变量值:#define CHAPTER   1.23

表示函数:#define MAXVALUE(a,b)    (a>b?a:b)

在编译前,预处理器会将其替换成对应的值或表达式;

2)缺点

>>当运用一个宏定义的常量但获取编译错误信息时,提示的错误信息可能是具体的值比如本例中1.23,而不是CHAPTER;

>>如果使用宏定义的变量CHAPTER 有多处,所有用到的地方都会被替换,就会出现多份1.23;

2.可以以const、enum、inline来替换#define

1)对于单纯变量,可以用 const或enum替换

      >>对于一些变量例如小数:  #define CHAPTER   1.23  可以替换为  const double CHAPTER  =1.23

      >> 如果为整数可用const/enum,例如     #define  PAGE2     2   可以替换为 const int PAGE2=2  或者 enum {PAGE2=2}

2)对于形似函数的宏可以用inline

例如#define MAXVALUE(a,b)    (a>b?a:b)可替换为

template<typename T>

inline T  maxValue(const T&a,const T& b)

{

      return a>b?a:b;

}

猜你喜欢

转载自www.cnblogs.com/jiayouya-susu/p/11919684.html