|
#define <identifier> <replacement token list> #define <identifier>(<parameter list>) <replacement token list> |
Meaning:
|
|
Example:
#define PI 3.141592653589793238462643383279502884197 #define MAX 99999 int main( int argc, char* argv[] ) { int x; double y; x = MAX; y = PI; for ( i = 0; i < MAX; i++ ) z = k * sin( i * PI ); } |
After processing with gcc -E constant.c:
int main( int argc, char* argv[] ) { int x; double y; x = 99999; y = 3.141592653589793238462643383279502884197; for ( i = 0; i < 99999; i++ ) z = k * sin( i * 3.141592653589793238462643383279502884197 ); } |
How to run the program:
|
Example:
#define square(x) (x*x) // Be careful, this definition had a problem !! int main( int argc, char* argv[] ) { double a, b; b = square(a); } |
After processing with gcc -E define2.c:
int main( int argc, char* argv[] ) { double a, b; b = (a*a); ( square(a) ---> (a*a) ) } |
How to run the program:
|
|
Example:
#define square(x) (x*x) // Becareful !!! int main( int argc, char* argv[] ) { double a, b, z; z = square( a+b ); // a+b*a+b = a + (a*b) + b != (a+b)^2 !! } |
After processing with gcc -E define2.c:
int main( int argc, char* argv[] ) { double a, b, z; z = a+b*a+b; // a+b*a+b = a + (a*b) + b != (a+b)^2 !! } |
Solution:
#define square(x) ((x)*(x)) |
How to run the program:
|
#undef macro-name |
Example:
#undef PI #undef MAX #undef square |