OK, let's refocus the debate to try to make the situation more clear to everybody then.
The first thing I need to point out, which I think may help understanding what we are really dealing with here, is that the 4200 warning is only produced when compiling libusbx-based code with /W4 (the highest warning level for MSVC, which I would say is roughly equivalent to -pedantic). But /W4 isn't the default warning level Microsoft sets a project to when it is created. Please see [1], for an indication of these warnings only needing to be silenced after we switched to the non default /W4 warning level. In other words, I could sum up what we are trying to accomplish here as equivalent to silencing the similar warning gcc issues when compiling in pedantic mode (which I guess, if we agree this is something we want to do for MSVC, would also have to be carried out for gcc -pedantic then, as well as any extra warning we get in pedantic mode). My take then is that: 1. Because it isn't the default warning level, most libusbx users will not use /W4 and therefore not see that warning 2. If they choose to use /W4, it should also fall on them to silence any extra warnings they get there. Thus, I could say it is only an annoyance for people who deliberately chose to be annoyed by turning their warning levels to pedantic (that is, unless later versions of VS set /W4 as the default level which I don't think they do). But let me also elaborate on the other concerns I have: 1. This would be the very first warning we choose to disable in our header, something I don't believe we have done for any other platform, and I have reasons to fear we may open a pandora's box, where every single libusbx users out there can point to this precedent and say "yeah, if libusbx could remove that other warning I get that annoys me, because I don't think it will ever be relevant to anyone, that'd be great..." 2. Non-standard exceptions means non-standard implementation, i.e. every compiler is free to implement that extension in whichever way they want. My problem with that is that we have DLL interchangeability, which means that someone may use a gcc generated DLL (using MinGW) in their MSVC projects. We even publish such DLLs in our downloads. Of course you may counter: "how likely is it that gcc and MSVC would implement zero sized arrays in a manner that's incompatible?" Unfortunately, they do, and I've had first hand experience of that with libcdio (you were looking for an example to justify my concerns - see [2]), when I discovered that in the Microsoft world, an union of zero-sized arrays is not zero bytes as expected (and as is the case for GNU), but one byte. I don't remember how much time I spent figuring out that issue, but I don't think it was less than a couple hours. Now, I don't think having the zero-sized array warning would have helped me much (I think it was disabled in the project, as with libusbx, and I'd probably have ignored it otherwise), but I feel it may have helped others. 3. Of course, as per the example you pointed out, MS will have no choice but to disable a warning introduced by their header when compiling code, because these headers come from the compiler itself, so it wouldn't look good on them at all (plus they don't have to care about cross-platform usage of this header, where different compilers interpreting the header may implement nonstandard features differently - whereas we do). So while I'm sure you will disagree, I'm not seeing "looking good when users choose to go with pedantic options" as a a concern libusbx should have, unless we do that across the board for all compilers, and not just MSVC. I could elaborate some more, but I too feel the discussion has been going long enough. But to sum up the situation: "Do we want to silence warnings that are only issued in pedantic mode (and that may not be that innocuous in cross-platform usage) in the libusbx header?" Regards, /Pete [1] http://marc.info/?l=libusb-devel&m=126505290606197&w=2 [2] http://lists.gnu.org/archive/html/libcdio-devel/2012-02/msg00044.html ------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. SALE $99.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122412 _______________________________________________ libusbx-devel mailing list libusbx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libusbx-devel