Folks,
Why do we need to define _FORCENAMELESSUNION to get nameless unions in oleauto.h? Is this a standard feature, or is it just another Wine extension? Can someone please check the Windows headers to see how struct tagVARIANT is defined? Our is as follows:
struct tagVARIANT { union { struct __tagVARIANT { VARTYPE vt; WORD wReserved1; WORD wReserved2; WORD wReserved3; union /* DUMMYUNIONNAME */ { /* By value. */ CHAR cVal; USHORT uiVal; ULONG ulVal; INT intVal; UINT uintVal; BYTE bVal; short iVal; long lVal; float fltVal; double dblVal; VARIANT_BOOL boolVal; SCODE scode; DATE date; BSTR bstrVal; CY cyVal; IUnknown* punkVal; IDispatch* pdispVal; SAFEARRAY* parray;
/* By reference */ CHAR* pcVal; USHORT* puiVal; ULONG* pulVal; INT* pintVal; UINT* puintVal; BYTE* pbVal; short* piVal; long* plVal; float* pfltVal; double* pdblVal; VARIANT_BOOL* pboolVal; SCODE* pscode; DATE* pdate; BSTR* pbstrVal; VARIANT* pvarVal; PVOID byref; CY* pcyVal; DECIMAL* pdecVal; IUnknown** ppunkVal; IDispatch** ppdispVal; SAFEARRAY** pparray; } __VARIANT_NAME_3; } __VARIANT_NAME_2; DECIMAL decVal; } __VARIANT_NAME_1; };