11.2 Choosing an Expression Evaluator

CodeView loads all the expression evaluators that you specify with Eval entries in TOOLS.INI. However, you need to load only one expression evaluator for most debugging tasks. This section discusses how to choose the appropriate one for your debugging environment.

If you place more than one Eval setting in TOOLS.INI, CodeView loads all the expression evaluators. You can specify the active evaluator by using the Language command on the Options menu or with the USE command. By default, CodeView automatically selects the appropriate expression evaluator based on the current source file's extension. For more information on the Language command, see page 370. For details on the USE command, see page 452. For information on the Eval entry and complete instructions for configuring CodeView, see “Setting Up CodeView”.

When you are debugging C or MASM source code, you can normally use either the C or the C++ expression evaluator. C++ is mostly a superset of C at the expression level, and both evaluators support operators for debugging MASM code. Therefore, CodeView loads the C++ expression evaluator by default when no other expression evaluators are specified.

However, you might want to use only the C expression evaluator. If you are debugging C or MASM source code, it is recommended that you specify only the C expression evaluator. If your C program uses C++ keywords as variable, function, or label names, you must use the C expression evaluator. C variable names that are C++ keywords are not recognized as variables by the C++ expression evaluator. The C++ expression evaluator requires more memory than the C evaluator. Therefore, load only the C expression evaluator when running CodeView in an environment with limited memory.

You must use the C++ expression evaluator to debug C++ because the C evaluator does not recognize C++ expressions or keywords and cannot translate the decorated names produced by the C++ compiler. If you try to debug a C++ application with the C expression evaluator, C++ expressions generate an error, and you must use the decorated symbol names. For more information on decorated names, see Appendix B.