On Monday, 22 April 2019 at 11:04:49 UTC, dangbinghoo wrote:
alias ifr_ifrn.ifrn_name            ifr_name;     /* interface name     */

So, how to do alias for a C struct member?


D doesn't support this kind of alias. There's two options:

1) just write the full name in the code.

ifreq ifr;

ifr.ifr_ifrn.ifrn_name /* instead of ifr.ifrn_name */

or, if you are linking in the D module containing the translated headers (if you don't link it in, this will cause missing symbol linker errors!)

2) write ref property functions to get to it, using ufcs for the middle. So replace that *alias* line with:

@property ref ifr_name(ifreq this_) { return this_.ifr_ifrn.ifrn_name; }


Then you should be able to use it the same way as in C.

Reply via email to