【发布时间】:2010-10-07 13:55:10
【问题描述】:
我已经实现了一个循环缓冲区,我想要一种简洁的方法来更新缓冲区指针,同时正确处理环绕。
假设数组大小为 10,我的第一反应是这样的:
size_t ptr = 0;
// do some work...
p = ++p % 10;
静态分析以及 gcc -Wall -Wextra 正确地拍打了我的手腕,因为违反了序列点的行为。明显的解决方法是:
p++;
p %= 10;
但是,我一直在寻找更简洁的东西(即单线)来“封装”这个操作。建议?除了p++; p%= 10; :-)
【问题讨论】:
标签: c c99 sequence-points