最近在研究Deduplication(重复数据删除)存儲技术实现一个dedup原型系统,结果在Coding中遇到了一个莫名其妙的问题简略代码如下:
32KB,所以block_num应该为59才对问题出在哪了呢?这段代码非常簡单了没有什么复杂的逻辑,我反复review了几次也没有发现问题于是,在家里转了两圈然后无意中注意到了BLOCK_LEN的宏定义。define总是容易犯些低級的错误难道我也犯了最低级的错误不成?
看到这行我当时就傻了,自己还真犯了最低级、最原始的错误
上面这行宏替换后就成了:
这次经验教训深刻,估计我以后很少会再犯类似错误了另外也小有收获和乐趣 ^-^。
最后提醒一下:宏使用很方便但要谨慎使用,尤其需要注意书写格式尽量多用括号避免歧义。细节是魔鬼!