Quantcast
Channel: Visual Studio Integrate forum
Viewing all articles
Browse latest Browse all 4410

Trying to better understand how IntelliSense for VC++ works (specifically front-end options)

$
0
0

I have VC++ makefile projects with some extra bits to support a custom toolchain.  I'm passing all of the include paths and macros to IS via <NMakeIncludeSearchPath/> and </NMakePreprocessorDefintions>.  The compiler is clang. IS somewhat works but doesn't understand gcc/clang builtins, etc.  It also doesn't honor __cplusplus passed in via NMakePreprocessorDefintions.  If I define __cplusplus to 201104, it always shows 199711 when I hover over it in the editor.

I create a VC++ for Linux project (the blink template).  When I hover over __cplusplus in that it correctly shows 201104, or whatever I choose for the C++ language standard in the project options.

I enabled IS logging so I could see exactly what options it's passing for each translation unit.  I can see it's passing /ClangMode, /TP and /Clangstdc++11.  I don't see those options documented in cl.exe anywhere.  I've also read that IS is using the EDG front-end, but the options IS logging reports are actually cl.exe options, not EDG.  So I'm very confused as to what's going on here.  What front-end is VC++ actually using for IS?  I'm using VS2015 BTW.

OK, so if I pass __cplusplus as a macro it's probably just being overridden by the front-end anyway, so I need to pass the language standard to the front end.  I see how the blink project does it so I do the same in my project.  I can now see that's it's passing /ClangMode, /TP and /Clangstdc++11 to the front-end for my project.  But it still shows 199711!!  I closed/reopened the project, restarted VS, deleted the .suo.  I feel like I've tried everything.

Could someone please enlighten me on how this works and how I might be able to debug what it's not working as I'd expect?

Thanks,

Warren



Viewing all articles
Browse latest Browse all 4410

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>