Visual Studio incorrectly marking inactive code blocks when using `#ifdef`
My project has a bunch of #ifdefs
. The macros used by these #ifdef
s are usually passed through the command line using the '/D'
option to get different build configurations. Visual studio incorrectly assumes that these macros are not defined and greys out the code blocks present inside these #ifdef
s. The problem is not syntax highlighting - I can turn the grayed out code to colored code from Options; the main issue is that I am not able to go to the function definition of any functions present inside that #ifdef
. I tried reading about Visual Studio hint files but that didn't work for me.
Can anyon开发者_StackOverflow中文版e help me with this issue? I am using Visual Studio 2008.
Did you define several kinds of builds within VS as Configurations like Debug, Release, or are you building with makefiles? If you haven't taught VS about your /D options then I guess it can't help you. But you should be able to set up Preprocessor Definitions under project properties (Configuration Properties, C/C++, Preprocessor) to get the effect you want, right?
For each option /DMACRO=XXX
that you pass to the compiler, specify MACRO=XXX
in the IntelliSense Preprocessor Definitions. For each option /DMACRO
(no value) that you pass to the compiler, specify MACRO
in the IntelliSense preprocessor definitions.
If you're not debugging, and you're just trying to get intellisense or whatever to react, you can always just throw up a quick #define
to force the IDE to behave.
Seems you have a similar problem as this fellow:
Can intellisense be enabled in VS2008 within preprocessor directive blocks like #ifndef ... #endif
精彩评论