On 6/11/22 12:34, LIU Hao wrote:
在 2022-06-11 21:10, Biswapriyo Nath 写道:
After adding #define WIDL_C_INLINE_WRAPPERS, this is shown:
error: multiple storage classes in in declaration specifiers

I think this is caused by

    static FORCEINLINE ULONG IUnknown_AddRef(IUnknown* This) {

which contains `FORCEINLINE`, defined in 'winnt.h' as

    #define FORCEINLINE __forceinline

which contains `__forceinline`, defined in '_mingw.h' as

    #define __forceinline extern __inline__ 
__attribute__((__always_inline__,__gnu_inline__))

which results in `static extern __inline__ ...` and is thus invalid.


The combination of `extern` with `__gnu_inline__` is necessary to suppress 
generation of a function
body if the attached function could not be inlined when compiling as C99.

Why do we need that?

I don't think there is
anything we can do with these headers. Perhaps WIDL should not generate 
`static` for `FORCEINLINE`
functions; or, if that is not an option, `static __inline__` might be a better 
alternative.

Is it legal to use 'static __forceinline' or 'extern __forceinline' with MSVC? If so I imagine we should find a solution that allows them.


_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to