|
#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
|