We have a large amount of C/C++ code that’s compiled for multiple targets, separated by #ifdefs. One of the targets is very different from the others and it’s often important to know if the code you’re editing is compiled for that target. Unfortunately the #ifdefs can be very spread out, so it’s not always obvious which code is compiled for which targets.
Visual Studio’s #ifdef highlighting can be helpful for visually identifying which code is compiled for which target, but changing the highlighting apparently requires modifications to the project file.
I’m interested in finding a tool or method that can help coders quickly recognize which targets are using each line of code. Even if it requires some sort of manual in-source annotation I think it could still be helpful. Best case it’s automated, not tied to a specific editor or IDE, and it could be configured to warn in certain conditions (eg “you modified some code on Target X, be sure to test your code on that platform!”).
Check out Visual SlickEdit. The “Selective Display” option might be what you are looking for. I can’t find any on-line documentation on it, but it will allow you to essentially apply a set of macro definitions to the code. So you can tell it to show you the code as the compiler will see it with a set of macros defined. This is a lot more than preprocessor output since it literally hides blocks of code that would be excluded based on the macro definitions.
This doesn’t give you the ability to answer the question “Under what preprocessor conditions is this line of code included in compilation” though. The nice thing is that it applies the selective display filter to searches and printing.