[cfe-dev] Current state of Microsoft extensions

Leandro T. C. Melo leandro.melo at nokia.com
Fri Nov 4 02:30:48 PDT 2011


On 11/3/2011 5:49 PM, ext Francois Pichet wrote:
> On Thu, Nov 3, 2011 at 11:39 AM, Leandro T. C. Melo
> <leandro.melo at nokia.com>  wrote:
>> Hi all,
>>
>> as far as I understand, clang doesn't fully support the Microsoft
>> extensions yet. I know there are options like -fms-extensions and others
>> such as -fdelayed-template-parsing that can be useful. Still I gave it
>> try with an up-to-date version of clang (VS 2010) for a file that simply
>> #include<algorithm>  and got quite a few errors.
> If you include<algorithm>  then you must explicitly pass -nobuiltininc
> because some clang builtins don't mix well with VS 2010 headers.
>
> test.cpp:
> #include<algorithm>
>
> clang -nobuiltininc test.cpp
>
> should give no error.
>
>> I was told on IRC that there's been recent work in this area. So I'd
>> like to kindly ask if someone could provide an overview of the current
>> situation. Basically, an update of the statements from
>> http://clang.llvm.org/docs/UsersManual.html and
>> http://llvm.org/docs/GettingStartedVS.html concerning the Microsoft
>> environment. Perhaps there's a more detailed list of what can be
>> expected, what is missing, what's currently on the way, where help is
>> needed, etc?
> The current state is that clang will parse all MSVC 2010 standard
> headers, all the Windows SDK headers files ( -fsyntax-only).
>
> As for the MSVC 2008 standard headers, clang will choke because on
> some missing typename.
>
> clang can *almost* parse most of the MFC code. (4 remaining issues)
>
> I have been a little bit busy lately but I am planning to submit more
> patches soon to get clang to parse VS 2008 headers and MFC code.
>
> Notably I have a (almost ready) patch (really a hack!) to be able to
> get around the missing typename in MSVC headers.
>
> Unfortunately there is no doc really about what is missing to be more
> MSVC compatible. If you want to help I suggest you pick a large MSVC
> code base, try to parse it with clang and see the errors and submit
> patches to fix them.
>
> As for using clang for CodeGen and linking with MSVC libraries, C code
> will work but for C++ there are a lot of works to do.
>

Thanks Francois,

I was not aware of -nobuiltininc. The file is parsed perfectly now.

I guess your explanation is quite complete so it can serve as a 
"temporary" doc... :-)

Currently we are working on an experimental version of the Qt Creator 
IDE which uses clang for supporting our C++ code model (an email was 
actually sent to this list a few days ago). Since we are cross-platform 
it might be that other VS related issues show up. I'll try to keep my 
eyes on it.

Cheers,
Leandro




More information about the cfe-dev mailing list