(stabs.info.gz) Macro define and undefine
Info Catalog
(stabs.info.gz) Types
(stabs.info.gz) Top
(stabs.info.gz) Symbol Tables
6 Representation of #define and #undef
**************************************
This section describes the stabs support for macro define and undefine
information, supported on some systems. (e.g., with `-g3' `-gstabs'
when using GCC).
A `#define MACRO-NAME MACRO-BODY' is represented with an
`N_MAC_DEFINE' stab with a string field of `MACRO-NAME MACRO-BODY'.
An `#undef MACRO-NAME' is represented with an `N_MAC_UNDEF' stabs
with a string field of simply `MACRO-NAME'.
For both `N_MAC_DEFINE' and `N_MAC_UNDEF', the desc field is the
line number within the file where the corresponding `#define' or
`#undef' occurred.
For example, the following C code:
#define NONE 42
#define TWO(a, b) (a + (a) + 2 * b)
#define ONE(c) (c + 19)
main(int argc, char *argv[])
{
func(NONE, TWO(10, 11));
func(NONE, ONE(23));
#undef ONE
#define ONE(c) (c + 23)
func(NONE, ONE(-23));
return (0);
}
int global;
func(int arg1, int arg2)
{
global = arg1 + arg2;
}
produces the following stabs (as well as many others):
.stabs "NONE 42",54,0,1,0
.stabs "TWO(a,b) (a + (a) + 2 * b)",54,0,2,0
.stabs "ONE(c) (c + 19)",54,0,3,0
.stabs "ONE",58,0,10,0
.stabs "ONE(c) (c + 23)",54,0,11,0
NOTE: In the above example, `54' is `N_MAC_DEFINE' and `58' is
`N_MAC_UNDEF'.
Info Catalog
(stabs.info.gz) Types
(stabs.info.gz) Top
(stabs.info.gz) Symbol Tables
automatically generated by
info2html