[clang] [clang] Allow C-style casts in constexpr in MS compatible mode (PR #197005)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 24 08:20:11 PDT 2026
eleviant wrote:
> Looks like winnt.h already says, since a long time ago:
>
> ```
> #ifdef __has_builtin
> #if __has_builtin(__builtin_offsetof)
> #define FIELD_OFFSET(type, field) ((LONG)__builtin_offsetof(type, field))
> [...]
> ```
>
> Is the problem that someone's copied this define into another file? If so, can that other file just be updated correspondingly, with the same change?
This is what I see in `wdm.h`
```
#ifndef FIELD_OFFSET
#define FIELD_OFFSET(type, field) ((ULONG)&(((type *)0)->field))
#endif
```
There are plenty of other cases too:
```
#ifdef _WIN64
#define offsetof(s,m) (size_t)( (ptrdiff_t)&(((s *)0)->m) )
#else
#define offsetof(s,m) (size_t)&(((s *)0)->m)
#endif
```
```
#define NdrFieldOffset(s,f) (LONG_PTR)(& (((s *)0)->f))
```
```
#ifndef CCSIZEOF_STRUCT
#define CCSIZEOF_STRUCT(structname, member) (((int)((LPBYTE)(&((structname*)0)->member) - ((LPBYTE)((structname*)0)))) + sizeof(((structname*)0)->member))
#endif
```
https://github.com/llvm/llvm-project/pull/197005
More information about the cfe-commits
mailing list