[alsa-devel] Problems in writing test apps

Matthias Koenig mkoenig at suse.de
Thu Apr 3 11:59:00 CEST 2008


"haoshun" <haoshun at 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


More information about the Alsa-devel mailing list