This bug traces back to the option to handle preprocessing macros defined within the current file. Document > C/C++ Options > C/C++ Advanced Options >
- Expand local preprocessing defines.
This option was working for tagging, as you could see in the Defs tool window that certain symbol definitions were preprocessed out, but it did not apply to the color coding for inactive code regions (#if, etc). That is why some symbols were flagged as unknown by symbol coloring, because they indeed were preprocessed out by the tagging engine, but color coding still thought that was valid code. I've added some logic to save those artifacts so that color coding can look for the macro definitions from the current file.
Here is a simple example that reproduces the issue (provided that option is enabled).
#define SI8 0
int var_before=0;
#if SI8
void function_grayed_out(int arg1, int arg2);
#else
void function_in_the_middle(int arg3, int arg4);
#endif
int var_after=0;