2014-03-06 6 views
-1

나는 아래의 코드에서 알 수없는 크기의 오류가 발생하고,무효 포인터 연산 오류

atmel_device_info_t *info; 

    int *ptr = row->offset + (void *) info 

이 캐스팅 문제, 내가 오류를 해결하기 위해 무엇을해야합니까? 도와 줘서 고마워.

+0

오류를 게시 할 수 있습니까? 'info'를 초기화하지 않았습니다. –

답변

8

포인터를 void * 포인터로 이식 할 수 없습니다. 알 수없는 유형의 데이터에 대한 포인터이기 때문에 데이터에는 본질적인 크기가 없습니다. pointed-to 데이터의 크기는 산술 연산의 핵심 부분입니다.

는 일반적으로 "바이트"포인터가 작동합니다

int *ptr = (int *) ((unsigned char *) info + row->offset); 

을 위 row->offset 오프셋 바이트가 아닌 오프셋 int이 있다고 가정합니다. 후자를 원하면 그에 따라 캐스트하십시오 :

int *ptr = (int *) info + row->offset; 
+0

특히'row-> offset' 값이'byte's에 있으면 포인터가'byte' 단위로 작업해야합니다. – benjymous

+0

설명해 주셔서 감사합니다! – user3068597