宏定义Bug

    昨天在公司调程序,最后定位到是由一个宏定义引起的Bug。我的宏定义是这样写的:

#define BYTE(n) (n * 2)

我一直认为我不会在宏定义上犯错误,因为我见过一些错误的例子,所以我很小心的加了个括号。遗憾的是这还是错误的。知道是一回事,实践是另一回事!当程序执行下面这句时结果就不是我预期的了:

int i = BYTE(1 + 2)

所以正确的写法是:

#define BYTE(n) ((n) * 2)

(The End)

posted @ 2012-11-25 22:58  bitbyte  阅读(179)  评论(0编辑  收藏  举报