昨天在公司调程序,最后定位到是由一个宏定义引起的Bug。我的宏定义是这样写的:
#define BYTE(n) (n * 2)
我一直认为我不会在宏定义上犯错误,因为我见过一些错误的例子,所以我很小心的加了个括号。遗憾的是这还是错误的。知道是一回事,实践是另一回事!当程序执行下面这句时结果就不是我预期的了:
int i = BYTE(1 + 2)
所以正确的写法是:
#define BYTE(n) ((n) * 2)
(The End)
本文共 288 字,大约阅读时间需要 1 分钟。
昨天在公司调程序,最后定位到是由一个宏定义引起的Bug。我的宏定义是这样写的:
#define BYTE(n) (n * 2)
我一直认为我不会在宏定义上犯错误,因为我见过一些错误的例子,所以我很小心的加了个括号。遗憾的是这还是错误的。知道是一回事,实践是另一回事!当程序执行下面这句时结果就不是我预期的了:
int i = BYTE(1 + 2)
所以正确的写法是:
#define BYTE(n) ((n) * 2)
(The End)
转载于:https://www.cnblogs.com/bitbyte/archive/2012/11/25/2788321.html