2014-01-07 4 views
0

void * 포인터이있는 변수에 값을 할당하려고합니다. 아래는 제가 이해하는 한 최선의 과제입니다. 헤더 파일에구조체에 void * 포인터가있는 경우 값을 어떻게 할당합니까?

헤더 파일

struct fb_videomode { 
     .. 
     u32 xres; 
     .. 
}; 

struct fb_monspecs { 
     .. 
     struct fb_videomode *modedb; 
     .. 
}; 

struct atmel_lcdfb_info; 

struct atmel_lcdfb_info { 
     .. 
     struct fb_monspecs *default_monspecs; 
     .. 
}; 

struct device { 
    .. 
    void *platform_data; 
    .. 
}; 

struct platform_device { 
     .. 
     struct device dev; 
     .. 
}; 

C 파일

struct fb_videomode at91_tft_vga_modes[] = { 
     .. 
     .xres = 100, 
     .. 
}; 


struct fb_monspecs &at91fb_default_monspecs = { 
     .. 
     .modedb = at91_tft_vga_modes, 
     .. 
}; 

struct atmel_lcdfb_info ek_lcdc_data = { 
     .. 
     .default_monspecs = &at91fb_default_monspecs, 
     .. 
}; 

struct platform_device goldfish_lcd ={ 
     .. 
     .dev = { 
      .. 
      .platform_data = &ek_lcdc_data, 
      }, 
     .. 
}; 

모든 정의 된 다음

void set_fb_video() 
{ 

goldfish_lcd.dev.(atmel_lcdfb_info*)platform_data->default_monspecs->modedb->xres = 10; 
}; 

이 구조의 일부 (작동하지 않습니다) 제안 다시 크게 감사드립니다.

+1

당신은 C 또는 C++로 작성하고 있습니까? 두 언어로 모두 글을 쓸 수는 없으며 두 언어로 답변이 달라집니다. – godel9

+0

C로 쓰고, 태그를 업데이트했습니다. –

+0

고마워요.이 경우에는 제 대답이 효과가 있다고 생각합니다. – godel9

답변

2

캐스트가 올바른 위치에 있지 않습니다 사전에 감사합니다, 당신은 유형 atmel_lcdfb_info라고하지 않습니다

((struct atmel_lcdfb_info*)goldfish_lcd.dev.platform_data)->default_monspecs->modedb->xres = 10; 
+1

@ Jarod42 OP가 C 또는 C++로 쓰고 있는지 알 수 없습니다. 그 이유는 그가 두 가지로 게시물에 태그를 지정했기 때문입니다. 나는 그를 명확히 할 것을 요구하는 코멘트를 썼다. – godel9

+0

@ godel9, 감사합니다. 도움 감사 –

관련 문제