1.3.2 Macro Definitions of Functions
You might occasionally want to avoid using the macro definition of a
function--perhaps to make your program easier to debug. There are two
ways you can do this:
* You can avoid a macro definition in a specific use by enclosing
the name of the function in parentheses. This works because the
name of the function doesn't appear in a syntactic context where
it is recognizable as a macro call.
* You can suppress any macro definition for a whole source file by
using the `#undef' preprocessor directive, unless otherwise stated
explicitly in the description of that facility.
For example, suppose the header file `stdlib.h' declares a function
named `abs' with
and also provides a macro definition for `abs'. Then, in:
#include <stdlib.h> int f (int *i) { return abs (++*i); }
|
the reference to `abs' might refer to either a macro or a function. On
the other hand, in each of the following examples the reference is to a
function and not a macro.
#include <stdlib.h>
int g (int *i) { return (abs) (++*i); } #undef abs int h (int *i) { return abs (++*i); }
|
Since macro definitions that double for a function behave in exactly
the same way as the actual function version, there is usually no need
for any of these methods. In fact, removing macro definitions usually
just makes your program slower.
阅读(370) | 评论(0) | 转发(0) |