Detailed Print – Computer Sir Ki Class

Code Learning#CPP#4587

## #define Macros Nesting

Understanding how #define macros can be nested (use of one macros expression as a part of another macros expression)

## Learning Objectives

• Understanding the use of #define macro expression being nested as part of another #define macro expression

## Source Code

```		#include <iostream>
using namespace std;
#define SI(p,r,t) p*r*t/100
#define AMT(p,r,t) p+SI(p,r,t)
int main()
{
int p=203,r=5,t=2 ;
cout<<"Principal = "<<p<<endl;
cout<<"Rate = "<<r<<endl;
cout<<"Time = "<<t<<endl;
cout<<"Simple Interest = "<<SI(p,r,t)<<endl;
cout<<"Amount = "<<AMT(p,r,t)<<endl;
return 0;
} ```

## Run Output

``````Principal = 203
Rate = 5
Time = 2
Simple Interest = 20
Amount = 223``````

## Code Understanding

#define SI(p,r,t) p*r*t/100
First define expression with use of simple interest formula

#define AMT(p,r,t) p+SI(p,r,t)
Second define expression where expression of SI has been nested.

int main(){
int p=203,r=5,t=2 ;
Some test values for p, r and t have been assigned.

cout<<“Principal = “<<p<<endl; cout<<“Rate = “<<r<<endl; cout<<“Time = “<<t<<endl;
Printing user given values.

cout<<“Simple Interest = “<<SI(p,r,t)<<endl;
Use of first define to expression conversion.

cout<<“Amount = “<<AMT(p,r,t)<<endl;
Use of second define where SI expression is already nested.

return 0;}

## Notes

• #define macros can give immense possibility of dynamic compilation. This also helps in version control of C++ programs where not only expression values are easily definable but even expressions are definable.

## Common Errors

• Since data types are not checked while declaring #define macro expressions, so the user must check the data type himself.

Suggested Filename(s): pp-macn.cpp, define-macros-nesting.cpp