summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Hoffman <godisgovernment@gmail.com>2022-02-26 18:17:22 -0800
committerTormod Volden <debian.tormod@gmail.com>2022-04-06 21:42:07 +0200
commit32f3c6db957da09f78de18439c61ab1b8fe6358f (patch)
tree32d006bea7c65bf21e649d9e94cdf8412ac76636
parentbfbef179b12110d8d8fc6ff9e4af5f96a37a78ab (diff)
downloadlibusb-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.h7
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