Go forward to C Defaults.
Go backward to C Constants.
Go up to C.
C++ expressions
...............
GDB expression handling has a number of extensions to interpret a
significant subset of C++ expressions.
*Warning:* GDB can only debug C++ code if you compile with the GNU
C++ compiler. Moreover, C++ debugging depends on the use of
additional debugging information in the symbol table, and thus
requires special support. GDB has this support *only* with the
stabs debug format. In particular, if your compiler generates
a.out, MIPS ECOFF, RS/6000 XCOFF, or ELF with stabs extensions to
the symbol table, these facilities are all available. (With GNU
CC, you can use the `-gstabs' option to request stabs debugging
extensions explicitly.) Where the object code format is standard
COFF or DWARF in ELF, on the other hand, most of the C++ support
in GDB does *not* work.
1. Member function calls are allowed; you can use expressions like
count = aml->GetOriginal(x, y)
2. While a member function is active (in the selected stack frame),
your expressions have the same namespace available as the member
function; that is, GDB allows implicit references to the class
instance pointer `this' following the same rules as C++.
3. You can call overloaded functions; GDB resolves the function call
to the right definition, with one restriction--you must use
arguments of the type required by the function that you want to
call. GDB does not perform conversions requiring constructors or
user-defined type operators.
4. GDB understands variables declared as C++ references; you can use
them in expressions just as you do in C++ source--they are
automatically dereferenced.
In the parameter list shown when GDB displays a frame, the values
of reference variables are not displayed (unlike other variables);
this avoids clutter, since references are often used for large
structures. The *address* of a reference variable is always
shown, unless you have specified `set print address off'.
5. GDB supports the C++ name resolution operator `::'--your
expressions can use it just as expressions in your program do.
Since one scope may be defined in another, you can use `::'
repeatedly if necessary, for example in an expression like
`SCOPE1::SCOPE2::NAME'. GDB also allows resolving name scope by
reference to source files, in both C and C++ debugging (
see Program variables: Variables.).