How to do alias to a C struct member?

Adam D. Ruppe destructionator at gmail.com
Mon Apr 22 13:10:45 UTC 2019


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.


More information about the Digitalmars-d-learn mailing list