我不确定如何说出这个问题,所以我将举例说明我的目标。
我有一个函数可以从FIFO中获取下一个字节。
void fifoGet(uint8_t * byte) {
*byte = somefunction();
}
我正在创建一个刷新FIFO的功能
void fifoFlush(void) {
uint8_t i;
uint8_t discardByte;
for (i=0; i<fifoLength; i++) {
fifoGet(&discardByte);
}
}
我想知道的是,因为我不需要那个discardByte
,我可以绕过分配那个内存并将空指针传递给fifoGet()吗?
像
这样的东西void fifoFlush(void) {
uint8_t i;
for (i=0; i<fifoLength; i++) {
fifoGet(&void);
}
}
答案 0 :(得分:3)
不,void方法会导致程序的行为未定义,因为您将取消引用指向未知内存的指针。
您使用discardByte
可能是最好的选择。
答案 1 :(得分:1)
将结构更改为:
不会花太多时间uint8_t fifoGet() {
return somefunction();
}
void fifoFlush(void) {
uint8_t i;
for (i=0; i<fifoLength; i++) {
fifoGet();
}
}