【发布时间】:2011-01-01 15:15:07
【问题描述】:
所以我在程序的某处有(大部分被诽谤)#define MAX( a, b ) ( ((a) > (b)) ? (a) : (b) )(是的,是的,我知道)。在代码中的某个点有一个比较X>-1?,其中 X 是(据我所知)一个(有符号的)整数。该行是j += MAX(bmGs[i], bmBc[(int)y[i + j]] - m + 1 + i);,其中y 是char*。不一定令人惊讶,我发现宏返回 -1 作为较大的数字(我猜 int 或 unsigned 问题的数字太长,但我找不到它)。我想知道你们发现这些错误的技巧。
请注意,我并不是在寻求关于是否使用该宏的编程建议,我敢肯定人们很想告诉我我应该避免这样的事情,但问题在于其他地方。
谢谢。
【问题讨论】:
-
能否请您用一些具有适当变量类型的代码更新它。通过仅查看提到的部分,我看不出宏有任何问题。你检查过预处理的代码吗?
标签: c debugging gcc ubuntu macros