Not expanding macros is somewhat controversially because it could result in a loss of information if macros are used to change C++ syntax or semantics. Experience shows that this is no problem. Until now no user of Sniff has informed us about macro expansion problems. Not expanding macros means that the symbolic information corresponds exactly to the locally visible source code. This is frequently an advantage, for example, when macros are used to put unique prefixes in front of all class names.
Sniff's information extractor extracts information about declarations and definitions of C++ language elements and macros. It does not extract information about the usage of symbols. This information is extracted on the fly.