Solved

Visual Studio.NET 'C/C++' Gives Active Text the Inactive Text Color Between Preprocessor Directives

Posted on 2008-06-18
2
1,330 Views
Last Modified: 2010-08-05
I am still having the same problem in VS 2008 that I had in VS 2005.  It was somewhat intermittent in VS 2005, but seems to be a constant problem in VS 2008.

Let's say that "_RDEF3" is a preprocessor directive.  [I assigned "_RDEF3" in the Configuration Properties->C/C++->Preprocess Definitions section of the project properties]

I have code that states:

#ifdef _RDEF3
      blah
      blah
      blah
#else
      blah2
      blah2
      blah2
#endif

When Visual Studio detects code between #ifdef's that is inactive, it displays it in gray.  This is a really nice feature -- when it works.

The problem is that the "blah" text above, between the "#ifdef _RDEF3" and "#else" is grayed out and the "blah2" text is not.  However, when I debug the code, the "blah" text gets executed because "_RDEF#" is, in fact, a preprocessor directive.

Very strange.  On the one hand, VS thinks the text is inactive when in the text editor, on the other, it executes it because it thinks it IS active.

If I remove the "_" in "_RDEF3" then put it back, the "blah" text *DOES* become active.  But not for long.  If I press F5 to start executing the Debug version of the code, it immediately goes back to gray.


I thought VS 2008 would have fixed this by now.

0
Comment
Question by:richelieu7777
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 21817584
One workaround for this - not nice, I know - is to use #define directives instead of the project settings. This also exposes the same glitch sometimes, but *most* of the time it's consistent.
0
 

Accepted Solution

by:
richelieu7777 earned 0 total points
ID: 21821993
Thanks,  but I think I found the fix.  "Selecting "Clean Solution" then "Rebuild Solution" doesn't help at all.  However, when I use a program I wrote a while back to remove all project binary files, it fixed the problem.

I wrote this program when developing under Visual C 6.0 to #1)  reduce folder sizes of project copies I want to keep, #2)  prevent conflicts when debugging a previous project.  Therefore, it would force the compiler to re-create all binary files from scratch rather than relying on any previously existing files.

I didn't realize, however, that a 3rd benefit to this program is that it also fixes this issue in Visual Studio.NET.  I ran it just now and it fixed the problem.

The program deletes all the following files from the project folder:

     obj
     sbr
     idb
     bsc
     ilk
     pdb
     plg
     pch    
     ncb


I'm going to keep this question open just a little bit longer to see if anybody has found a better solution; for example, turning on "such & such" compiler option, or a patch from Microsoft or something.


0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Preface I don't like visual development tools that are supposed to write a program for me. Even if it is Xcode and I can use Interface Builder. Yes, it is a perfect tool and has helped me a lot, mainly, in the beginning, when my programs were small…
Many modern programming languages support the concept of a property -- a class member that combines characteristics of both a data member and a method.  These are sometimes called "smart fields" because you can add logic that is applied automaticall…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use while-loops in the C programming language.

688 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question