Wiki

Case Status
Log In

Wiki

 
Whole Tomato Software - Home
  • RSS Feed

Parse nested preprocessor macros

Visual Assist parses nested preprocessor macros but only to a limited depth, assuming you want to see intermediate evaluations as definitions of symbols. But by limiting the depth of parsing, Visual Assist will not know about symbols defined only when preprocessor macros are evaluated deeply. For example:

#define BEGIN_NAMESPACE_SHAPE namespace SpaceShape {
#define END_NAMESPACE_SHAPE }

#define BEGIN_NAMESPACE_TRIANGLE BEGIN_NAMESPACE_SHAPE namespace SpaceTriangle {
#define END_NAMESPACE_TRIANGLE } END_NAMESPACE_SHAPE

BEGIN_NAMESPACE_TRIANGLE
// unknown or improperly defined symbols appear here.
END_NAMESPACE_TRIANGLE

Tell Visual Assist to evaluate nested preprocessor macros deeply by setting the following in the registry:

HKCU\Software\Whole Tomato\Visual Assist X\<IDE spec>\EnhanceMacroParsing = 01

Set to 00 to restore default behavior.

If your preprocessor macros are in stable include directories, you must tell Visual Assist to rebuild its symbol databases before a change takes effect:

If deep parsing does not produce expected results, you might obtain them by overriding the parser in a stdafx.h specific to Visual Assist .

Visual Assist build 2217 and older

Tell Visual Assist to evaluate macros deeply by creating the following STRING registry value:

HKCU\Software\Whole Tomato\Visual Assist X\LimitMacro = "No"

and setting the following:

HKCU\Software\Whole Tomato\Visual Assist X\<IDE spec>\LimitMacroParsing = 00

Delete LimitMacro and return LimitMacroParsing to 01 to restore default behavior.

 

Tags: