一个文件有一系列 void 声明void*
,如下所示:
extern void __flash_rwdata_start;
...
initialize(&__flash_rwdata_start,
...
它们仅由链接描述文件作为引用二进制分区的符号提供,如下所示(即指针):
PROVIDE (__flash_rwdata_start = LOADADDR(.rwdata));
这会产生以下警告:
file.c:84:19: warning: taking address of expression of type 'void' [enabled by default]
根据问题 http://stackoverflow.com/questions/27263344 的答案,我已将其更改如下(unsigned long*
无论如何,获取指针的函数都使用):
extern unsigned long __flash_rwdata_start;
现在我想到原始定义的大小为零(或未定义),而当前定义没有,并且与问题27263344的答案不同,没有任何逻辑意义上的“真正的基础数据类型”。
本质上,我定义了一个有效的指针,但不指向有效值,因此取消引用是无效的。
有没有更安全或更可取的方法来避免警告,但没有分配空间的想法,不能取消引用?