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への回答とは異なり、論理的に意味のある「実際の基になるデータ型」はありません。
基本的に、有効なポインターを定義しましたが、有効な値を指していないため、逆参照することはできません。
警告を回避するためのより安全または望ましい方法はありますが、スペースが割り当てられているという考えがなければ、逆参照できませんか?