в моей функции я выделяю память и заполняю структуру с именем messagePacket
struct messagePacket *packet = malloc(sizeof(struct messagePacket));
//fill
Когда я пытаюсь привести указатель к (uint8_t *), gcc выдает предупреждение, в котором говорится: большое целое число неявно усечено до беззнакового типа
sendBuf(..., (uint8_t *)packet);
Я смог сделать следующее просто отлично, и я понимаю, что могу использовать этот подход в качестве обходного пути. Я здесь, потому что я предпочитаю учиться на этом, чем работать над этим.
uint8_t *buf = malloc(sizeof(struct messagePacket));
Размер struct messagePacket = 1209 B. Мое лучшее предположение состоит в том, что кусок памяти очень большой, и я храню его в старшем адресе памяти, таком как адрес 16 bye? Но это не согласуется с тем фактом, что я могу malloc uint8_t * того же размера.
sendBuf
? - person cnicutar   schedule 26.04.2012code #include <stdio.h> #include <stdlib.h> struct messagePacket { int a; int b[2000]; }; void sendBuf(char * d) { int c; c=*d; } int main() { struct messagePacket *packet = malloc(sizeof(struct messagePacket)); sendBuf((unsigned char*)packet); return 0; }
Я не вижу ошибки. - person wuliang   schedule 26.04.2012