Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] difference between #define and #include <stdio.h>

Status
Not open for further replies.

praveenkumar450

Newbie level 5
Joined
Jul 2, 2014
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Location
Hyderabad, Andhra Pradesh, India
Activity points
55
program 1


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#define AGE (14 / 2)
 
int main()
{
int x;
x=AGE;
   printf("think embedded is over %d years old.\n", x);
   return 0;
}


program 2


Code C - [expand]
1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
 int x=5;
printf("%d",x);
return 0:
}


And the question is
in the first program 1 i had
mentioned my company AGE using variable x with #define preprocessor directive
finally x value is getting
so, now the thing is what happen when iam including #include <stdio.h>
preprocessor directive how the x value is finalizing and why ?
 
Last edited by a moderator:

Basically #define is a macro, used to define the duplicate names or values, and it doesn't take any memory location.
In the program 1 AGE is replaced with (14/2),

#include<stdio.h> is pre defined header file that will come with compiler
installation, printf, scanf like this functions will come under #include<stdio.h>

program 1


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#define AGE (14 / 2)
 
int main()
{
int x;
x=AGE;
   printf("think embedded is over %d years old.\n", x);
   return 0;
}


program 2


Code C - [expand]
1
2
3
4
5
6
7
#include <stdio.h>
int main()
{
 int x=5;
printf("%d",x);
return 0:
}


And the question is
in the first program 1 i had
mentioned my company AGE using variable x with #define preprocessor directive
finally x value is getting
so, now the thing is what happen when iam including #include <stdio.h>
preprocessor directive how the x value is finalizing and why ?
 

#define is the same of "Find & Replace"



Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
#define AGE 20
 
int main()
{ 
   int x;
   x=AGE;
   printf("I have %d years old.\n", x);
   return 0;
}



The preprocessor runs, fins all ocorrences of "AGE" and replace with "20".
This is simple text substitution.

After the preprocessor runs the "find & replace" your code is as folows:


Code C - [expand]
1
2
3
4
5
6
7
8
9
#include <stdio.h>
 
int main()
{
   int x;
   x=20; 
   printf("I have %d years old.\n", x);
   return 0;
}



And you see the result: "I have 20 years old."


#include INSERTS one file INSIDE the other

Look at these 2 files:

File 1: Geometry.h


Code C - [expand]
1
2
3
#define TRIANGLE 3
#define SQUARE 4
#define PENTAGON 5




File 2: Geometry.c


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>  /* the angle brackets means: find in the default directory */
 
#include "Geometry.h" /* the quotes means: find in the current directory */
 
int main()
{
    printf "A Triangle has %d sides\n", TRIANGLE);
    printf "A Square has %d sides\n", SQUARE);
    printf "A Pentagon has %d sides\n", PENTAGON);
    return 0;
}




The preprocessor runs e made 2 actions:

1) Insert "Geometry.h" inside "Geometry.c"
2) Find & replace the contents of "Geometry.h"


In the first pass you have:



Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>  /* the angle brackets means: find in the default directory */
 
/* Geometry.h inside Geometry.c */
#define TRIANGLE 3 
#define SQUARE 4
#define PENTAGON 5
 
int main()
{
    printf "A Triangle has %d sides\n", TRIANGLE);
    printf "A Square has %d sides\n", SQUARE);
    printf "A Pentagon has %d sides\n", PENTAGON);
}





In the second pass you have:



Code C - [expand]
1
2
3
4
5
6
7
8
#include <stdio.h>  /* the angle brackets means: find in the default directory */
 
int main()
{
    printf "A Triangle has %d sides\n", 3);
    printf "A Square has %d sides\n", 4);
    printf "A Pentagon has %d sides\n", 5);
}



And the final result will be

A Triangle has 3 sides
A Square has 4 sides
A Pentagon has 5 sides



Hope this help.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top