I've noticed that sometimes the highlighting between active and inactive code works 80% of the time, the other 20% in back to front.
e.g.
#define ID_USE_EEPROM  // this in a header file 
source file :-
#ifdef ID_USE_EEPROM
   kID = NonVolatile_read16(EEPROMADDRESS_ID_BASE);                 // << break point is set and hit here but code here is highlighted inactive
   tID = NonVolatile_read8(EEPROMADDRESS_ID_BASE + 4);              // << break point is set and hit here but code here is highlighted inactive
   flgs = NonVolatile_read8(EEPROMADDRESS_ID_BASE + 

;              // << break point is set and hit here but code here is highlighted inactive
   crc = NonVolatile_read32(EEPROMADDRESS_ID_BASE + 12);           // << break point is set and hit here but code here is highlighted inactive
#else
   kID = IDContainer.kitID;                                                           //this code appears active but it is NOT because I have #define ID_USE_EEPROM in a header file
   tID = IDContainer.txID;                                                            //this code appears active but it is NOT because I have #define ID_USE_EEPROM in a header file
   flgs = IDContainer.flags;                                                           //this code appears active but it is NOT because I have #define ID_USE_EEPROM in a header file
   crc = IDContainer.crc;                                                             //this code appears active but it is NOT because I have #define ID_USE_EEPROM in a header file
#endif
svn build rev 8549