宏在C++中的替代解决方案

来源:互联网 发布:linux 登录日志查询 编辑:程序博客网 时间:2024/06/08 00:02

宏在C++中的替代解决方案

1. 常量定义

例如:

#define NUM 100

替换为

const int NUM = 100;

const常量放在头文件中,也不必担心存在多个实例的问题,对于const修饰的变量,编译器一般也会对其进行优化,不会出现多重定义的问题。

C语言中还有一个特殊的常量定义:NULL。其一般的定义为 #define NULL 0,指针的内容却是一个整型,这不符合常理。所以在C++11中使用nullptr代替了NULL。

2. 函数定义

宏只是在代码中做字符串替代展开,所以,用宏定义的函数,实际上并没有减少代码的体积。

#define square(x) (x*x)

替换为

inline int square(int value){    return value*value;}

或者

template <class T>inline T square(T& value)  {    T square(T& value);}

3. 类型重定义

#define unit_32 unsigned int

替换为

typedef unsigned int unit_32;
0 0
原创粉丝点击