Struct definition after static if

Don nospam at nospam.com
Mon Dec 14 08:05:31 PST 2009


Zarathustra wrote:
> I must to put a 'struct definition' inside a 'static if block' but other 'struct definition' doesn't see them.
> 
> static if(_WIN32IE !< 0x0400)
> struct TVINSERTSTRUCT{
> 
>   HTREEITEM hparent     ;
>   HTREEITEM hinsertafter;
> 
>   union tagDUMMYUNIONNAME{
>     TVITEMEX itemex;
>     TVITEM item;
>   }
> 
>   tagDUMMYUNIONNAME DUMMYUNIONNAME;
>   
>   alias DUMMYUNIONNAME.itemex itemex;
>   alias DUMMYUNIONNAME.item   item  ;
> 
> }
> else
> struct TVINSERTSTRUCT{
>   HTREEITEM hParent;
>   HTREEITEM hInsertAfter;
>   TVITEM item;
> }
> 
> static if(_WIN32IE !< 0x0600)
> struct TVITEMEX{
>   UINT      mask         ;
>   HTREEITEM item         ;
>   UINT      state        ;
>   UINT      statemask    ;
>   TSTR      text         ;
>   UINT      textmax      ;
>   INT       image        ;
>   INT       selectedimage;
>   INT       children     ;
>   LPARAM    lparam       ;
>   INT       integral     ;
>   UINT      stateex      ;
>   HWND      hwnd         ;
>   INT       expandedimage;
> }
> else
> struct TVITEMEX{
>   UINT      mask         ;
>   HTREEITEM item         ;
>   UINT      state        ;
>   UINT      statemask    ;
>   TSTR      text         ;
>   UINT      textmax      ;
>   INT       image        ;
>   INT       selectedimage;
>   INT       children     ;
>   LPARAM    lparam       ;
>   INT       integral     ;
> }
> 
> It works only if I declare TVITEMEX before TVINSERTSTRUCT. And the second question, Is it possible to use anonymous unions and structs?

Does that compile???   It shouldn't. !< is a floating-point operator.


More information about the Digitalmars-d-learn mailing list