<br><br><div class="gmail_quote">On Sat Jan 17 2015 at 4:03:48 PM Lawrence D'Oliveiro <<a href="mailto:ldo@geek-central.gen.nz">ldo@geek-central.gen.nz</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, 15 Jan 2015 22:36:18 -0800, Timothy Gu wrote:<br>
<br>
> gcc_struct is a no-op on Linux, but it changes the ABI to use on<br>
> Windows.<br>
<br>
OK, so how come clang works correctly without recognizing it?<br></blockquote><div><br></div><div>I was referring to GCC. Clang just ignores the attribute it doesn't recognize and throws the warning. On Linux again this doesn't matter. On Windows it does, but might not be visible to the tester.</div><div><br></div><div>Plus even if you are compiling on Windows it might not matter:</div><div><br></div><div>1. If the said structures are not exposed and are used internally only</div><div>2. If you compile the program and the library using the same compiler. Clang will still ignore it, and GCC still acknowledges it.</div><div>3. If your version of Clang defaults to gcc_struct anyway</div><div><br></div><div>When there *is* harm is when say you compile libdvdread with a version of Clang that defaults to ms_struct (which I think is the status quo as clang tries to appease more and more MSVC users than GCC users. But I might be wrong as I don't use clang on windows) and then try to link a program compiled with gcc against it, or vice versa.</div><div><br></div><div>Timothy</div></div>