This is somewhat a regression of: https://github.com/openvswitch/ovs/commit/27f141d44d95b4cabfd7eac47ace8d1201668b2c
The main issue using `offsetof` from <stddef.h> via the C compiler from MSVC 2015/2017 has issues and is buggy: https://bit.ly/2UvWwti Until it is fixed, we define our own definition of `offsetof`. Signed-off-by: Alin Gabriel Serdean <aserd...@ovn.org> --- include/openvswitch/compiler.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/openvswitch/compiler.h b/include/openvswitch/compiler.h index c7cb9308d..5289a70f6 100644 --- a/include/openvswitch/compiler.h +++ b/include/openvswitch/compiler.h @@ -236,6 +236,18 @@ #define OVS_PREFETCH_WRITE(addr) #endif +/* Since Visual Studio 2015 there has been an effort to make offsetof a + * builtin_offsetof, unfortunately both implementation (the regular define and + * the built in one) are buggy and cause issues when using them via + * the C compiler. + * e.g.: https://bit.ly/2UvWwti + */ +#if _MSC_VER >= 1900 +#undef offsetof +#define offsetof(type, member) \ + ((size_t)((char *)&(((type *)0)->member) - (char *)0)) +#endif + /* Build assertions. * * Use BUILD_ASSERT_DECL as a declaration or a statement, or BUILD_ASSERT as -- 2.21.0.windows.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev