"haoshun" haoshun@amoi.com.cn writes:
Hi: sorry,forget to add the subject right now... I'm confused by a problem when i modify a test application "alsa-lib-1.0.13/test/control.c". I wanna use the structure "snd_ctl_elem_value_t",but when i write like this: snd_ctl_elem_value_t aaa; there will be an error: storage size of 'aaa' isn't known while snd_ctl_elem_value_t *aaa; makes no errors. But i can't change it directly such as: aaa->id=test_id ; //test_id is defined before cause it will bring an error: dereferencing pointer to incomplete type I think i should use the function like "snd_ctl_elem_info_set_id",but i just want to know why,i don't think it disobeys the C syntax.Is there something different in the ALSA making procedure?or Makefile?
The ALSA data types are designed to be opaque. You cannot access the members of the structures directly as the structure definitions are simply not exported on purpose. You have to use the access functions. E.g. allocating a snd_ctl_elem_value_t structure will be done with the int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t **ptr)
Matthias