C では、uint16_t 配列を uint8_t を受け取る関数に渡したいと思います。
bool fctn(uint8_t *data, size_t length);
私は構造体の中にあるこの配列を持っています:
typedef struct sStruct sStruct;
struct sStruct{
uint16_t d[10];
}
sStruct myStruct;
私もです:
void test(sStruct structData) {
fctn( (uint8_t*)structData->d[0], 10*sizeof(uint16_t) );
}
ここでは長さは問題ではなく、配列を渡しています。この配列がまだポインターではない場合、「エラー: 異なるサイズの整数からのポインターへのキャスト」が表示されますが、uint8_t の配列のように見せるにはどうすればよいですか? その関数に関する限り、uint16_t 配列はサイズ uint8_t の倍長配列のように見えますが、コンパイラにこれを伝える方法がわかりません...入力が既にポインターである場合。
配列 'd' が構造体の中になく、単にグローバルであると言う場合、私はそうします
fctn( (uint8_t*)d, 10*sizeof(uint16_t) );
渡された構造体内の配列に対して関数を渡す正しい方法は何ですか?