<div dir="ltr"><div>Your question isn't actually that clear. What kind of brokenness do you care about? Are you looking for C++ that clang can't parse, or standard library features that behave incompatibly on Windows?  I think you mean the former.</div>
<div><br></div>The answer to that question is complicated. It depends on what you want to parse. I'd say there's several classes of stuff in order of increasing difficulty to parse:<div>- Plain C Windows SDK headers: windows.h</div>
<div>- MSVC C++ STL headers: vector, string</div><div>- Templateless COM headers: DirectX etc</div><div>- Template libraries: ATL, WRL</div><div><br></div><div>The first three classes aren't that hard to parse. When they use standard language features, they are mostly well-formed. The difficulty in parsing them is that they use lots and lots of language extensions. The basic stuff is dllexport and __stdcall, but it gets harder. There are weird IDL attributes involving square brackets, for example.</div>
<div><br></div><div>The final category is really something all on its own. MSVC's template model is drastically different from ours. You could hypothetically hack these headers in probably 20 or so places to get them to parse with Clang without any compatibility hacks, but you end up fighting an uphill battle. This is the category that native GUI apps tend to have, while batch processing apps like LLVM can get by with the first three sets.</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Aug 26, 2014 at 3:23 PM, James Gregurich <span dir="ltr"><<a href="mailto:bayoubengal@mac.com" target="_blank">bayoubengal@mac.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">hi. thanks for the response.<br>
<br>
“we discussed that and it wasn’t the best approach” is good enough for me for now. I don’t have an immediate need, and the folks who looked at it likely know as much or more than I do about the subject. When I have some time to tinker, I’ll try it and see what I get and/or go dig into the archives to see what was said. if the answer to the question is in the archives, then there is no point to rehashing it.  To me, not knowing the history, the two obvious question weren’t being asked…WHAT exactly is “broken" in the headers and CAN it be bypassed with some some preprocessor game-playing?<br>

<br>
I wasn’t trying to a jerk. I just did’t like being shut down on what to me is a legitimate issue to hash out.<br>
<span class="HOEnZb"><font color="#888888"><br>
-James<br>
</font></span><div class="im HOEnZb"><br>
<br>
On Aug 25, 2014, at 11:14 PM, Nikola Smiljanic <<a href="mailto:popizdeh@gmail.com">popizdeh@gmail.com</a>> wrote:<br>
<br>
> Hi James, I'll bite the bullet by trying to paraphrase Chandler. I think that he was just trying to keep the discussion on topic. It happens quite often that someone has additional questions, like you in this case. But as Chandler pointed out, brokenness of platform headers on windows really doesn't have anything to do with minimum version of msvc needed to compile clang and that's what the discussion was all about.<br>

><br>
> Please start a new thread and people will be more than happy to answer your questions. You can also try and search the archive for specific information on how broken the headers are, but I don't think any sort of wrapping can solve these issues, conforming compiler doesn't understand their dialect of C++, it's that simple.<br>

><br>
<br>
<br>
</div><div class="HOEnZb"><div class="h5">_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div>