此功能由API提供给我:
void GetTime(uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t*, uint8_t* );
GetTime
通过写入这些指针来返回时间。问题是,我只需要写入其中一个指针的值。如果我可以控制GetTime
,我要么检查指针是NULL
还是返回结构,但我不能。
这是我目前的解决方案,忽略了虚拟*指针:
uint8_t *seconds, *dummy0, *dummy1, *dummy3, *dummy4, *dummy5;
GetTime( dummy0, dummy1, dummy3, dummy4, dummy5, seconds );
有没有更简洁的方法来解决这个问题而不会出现混乱?
答案 0 :(得分:7)
首先,你做错了,你需要分配一个uint8_t并传递指针。
其次,您可以为所有人使用相同的假人:
uint8_t seconds, dummy;
GetTime( &dummy,&dummy,&dummy,&dummy,&dummy, &seconds );
最后,API可能会接受NULL。这有用吗?:
uint8_t seconds;
GetTime( NULL,NULL,NULL,NULL,NULL, &seconds );
答案 1 :(得分:2)
如前所述,你可以使用这样的功能来帮助你调用GetTime
uint8_t dummy[5];
uint8_t seconds;
GetTime(dummy, dummy + 1, dummy + 2, dummy + 3, dummy + 4, &seconds);
return seconds;
如果您知道GetTime
可以正常使用非唯一的指针,那么您可以放弃这个(但是,再次,您只需要保存4个字节):
uint8_t dummy, seconds;
GetTime(&dummy, &dummy, &dummy, &dummy, &dummy, &seconds);
return seconds;
答案 2 :(得分:1)
编写一个辅助函数,调用此函数提供虚拟指针,并且只接受一个指针 - 您关心的指针。