diff options
author | Shawn Hoffman <godisgovernment@gmail.com> | 2022-02-26 18:17:22 -0800 |
---|---|---|
committer | Tormod Volden <debian.tormod@gmail.com> | 2022-04-06 21:42:07 +0200 |
commit | 32f3c6db957da09f78de18439c61ab1b8fe6358f (patch) | |
tree | 32d006bea7c65bf21e649d9e94cdf8412ac76636 | |
parent | bfbef179b12110d8d8fc6ff9e4af5f96a37a78ab (diff) | |
download | libusb-32f3c6db957da09f78de18439c61ab1b8fe6358f.tar.gz |
windows: Silence zero-sized array warning in libusb.h for msvc
Silence "nonstandard extension used : zero-sized array in struct/union"
(C4200) warning caused by use of ZERO_SIZED_ARRAY in structures defined
in libusb.h when compiling with msvc.
A libusb user including the header from a c++ file is more likely to be
annoyed by the warning because it is activated at level 2 as opposed to
being included from a C file, where it's not activated until level 4.
(on msvc, level 4 is the last step before -Wall).
This causes problems when you also enable -Werror for your own source,
since the libusb header just gets merged into the compilation unit.
9>hotplugtest.c
9>C:\src\libusb\libusb\libusb.h(786,11): error C2220: the following warning is treated as an error
9>C:\src\libusb\libusb\libusb.h(786,11): error C2220: uint8_t dev_capability_data[ZERO_SIZED_ARRAY];
9>C:\src\libusb\libusb\libusb.h(786,11): error C2220: ^
9>C:\src\libusb\libusb\libusb.h(786,11): warning C4200: nonstandard extension used: zero-sized array in struct/union
9>C:\src\libusb\libusb\libusb.h(786,11): warning C4200: uint8_t dev_capability_data[ZERO_SIZED_ARRAY];
9>C:\src\libusb\libusb\libusb.h(786,11): warning C4200: ^
9>C:\src\libusb\libusb\libusb.h(811,47): warning C4200: nonstandard extension used: zero-sized array in struct/union
5>C:\src\libusb\libusb\libusb.h(811,47): warning C4200: struct libusb_bos_dev_capability_descriptor *dev_capability[ZERO_SIZED_ARRAY];
5>C:\src\libusb\libusb\libusb.h(811,47): warning C4200: ^
9>C:\src\libusb\libusb\libusb.h(1284,38): warning C4200: nonstandard extension used: zero-sized array in struct/union
9>C:\src\libusb\libusb\libusb.h(1284,38): warning C4200: struct libusb_iso_packet_descriptor iso_packet_desc[ZERO_SIZED_ARRAY];
9>C:\src\libusb\libusb\libusb.h(1284,38): warning C4200: ^
9>Done building project "hotplugtest.vcxproj" -- FAILED.
Closes #1112
-rw-r--r-- | libusb/libusb.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libusb/libusb.h b/libusb/libusb.h index 61cacc9..2592ea7 100644 --- a/libusb/libusb.h +++ b/libusb/libusb.h @@ -26,6 +26,9 @@ #define LIBUSB_H #if defined(_MSC_VER) +#pragma warning(push) +/* Disable: warning C4200: nonstandard extension used : zero-sized array in struct/union */ +#pragma warning(disable:4200) /* on MS environments, the inline keyword is available in C++ only */ #if !defined(__cplusplus) #define inline __inline @@ -2128,6 +2131,10 @@ enum libusb_option { int LIBUSB_CALL libusb_set_option(libusb_context *ctx, enum libusb_option option, ...); +#ifdef _MSC_VER +#pragma warning(pop) +#endif + #if defined(__cplusplus) } #endif |