记得有一天在我们代码里遇到一个Bug,即在定义define的时候,由于双目表达式中未加括号,而造成结果错误的问题。
宏定义主要是用来定义常量,以及书写复杂且使用繁杂的表达式。它预编译的一部分,发生在编译之前,只是简单地进行字符串的替换,不会进行类型的检查。因此,在定义中,一定要小心的用括号括起来。
例如:
#define MIN(a,b) ((a) <= (b)?(a):(b))
在此,我又想到C++里的typedef,虽然typedef也是给一个对象取一个别名,但是它只是一种数据类型的别名,用来增强程序的可读性。
例如:
typedef unsigned int UNIT;