C macros are preprocessor directives like #define that is directly replaced into a source code in a C program. This replacement mechanism is called macro expansion.
In this example program, we will use a #define directive to do arithmetic operations.
Learn about C macro expansion before you begin with the example.
Problem Definition
As we mentioned earlier, #define directive is used to do macro expansion. In this program, we will write four function like macros that take two arguments and perform the arithmetic operations similar to a calculator.
For example, if X and Y are two arguments then
#define ADD(X, Y) ( X + Y)
#define SUBTRACT( X, Y) ( X - Y)
#define MULTIPLY(X, Y) (X * Y)
#define DIVIDE(X, Y) (X/Y)
Any variable that replaces X and Y will be used for arithmetic operations directly within the macros. Each opeation is separate and does not affect each other unless any expression changes the value of X or Y or both.
The source code of the program is given in the next section.
Program Source Code
#include <stdio.h>
#include <stdlib.h>
#define ADD(X, Y) ( X + Y)
#define SUBTRACT(X, Y) (X - Y)
#define MULTIPLY(X, Y) (X * Y)
#define DIVIDE(X, Y) (X/Y)
int main(){
int a,b;
/* variable declaration and initialization */
int addition,subtraction,mul,division;
addition = subtraction = mul = division = 0;
/* Reading Input values */
printf("Enter two numbers:\n");
scanf("%d",&a);
scanf("%d",&b);
/* Compute */
addition = ADD(a, b);
subtraction = SUBTRACT(a, b);
mul = MULTIPLY(a, b);
division = DIVIDE(a, b);
/* printing outputs */printf("\n");
printf("_________________________\n");
printf("Addition = %d\n",addition);
printf("Subtraction = %d\n",subtraction);
printf("Multiplication = %d\n",mul);
printf("Division = %d\n",division);
getch();system("PAUSE");
return 0;
}
Output
When the program executes, it asks for two input numbers – X and Y values. Once you enter the numbers, the preprocessor replaces the macros with actual codes and inputs are used to compute results.
The following screenshot shows the result obtained for inputs: X = 32 and Y = 2.
___________________________________
Enter two numbers:
34 2
___________________________________
Addition = 36
Subtraction = 32
Multiplication = 68
Division = 17