SlideShare une entreprise Scribd logo
1  sur  28
Anu. S
anusdhar4@gmail.com
www.facebook.com/AnuSasidharan
twitter.com/username
in.linkedin.com/in/profilename
9400892764
Pre-Processor Directives in C
Disclaimer: This presentation is prepared by trainees of
baabtra as a part of mentoring program. This is not official
document of baabtra –Mentoring Partner
Baabtra-Mentoring Partner is the mentoring division of baabte System Technologies Pvt . Ltd
INTRODUCTION
The C preprocessor executes before a program
is compiled.
Some actions it performs are
• inclusion of other files in the file being
compiled
•definition of symbolic constants and macros
•conditional compilation of program code
Preprocessor directives begin with #.
#include
It causes a copy of a specified file to be included in place of the directive.
The two forms of the #include directive are:
#include <filename>
#include "filename”
The difference between these is in the location the preprocessor begins
searches for the file to be included.
If the file name is enclosed in quotes, the preprocessor starts searches in
the same directory as the file being compiled for the file to be included .
This method is normally used to include programmer-defined headers.
If the file name is enclosed in angle brackets is used for standard library
header.
The search is performed in an implementation-dependent manner,
normally through predesignated compiler and system directories.
EXAMPLE
#include<stdio.h>
#include<string.h>
main()
{
int n;
char s[10];
printf("nEnter the string:n");
scanf("%s",s);
n=strlen(s);
printf("nLength is:%d",n);
}
EXAMPLE
//arithmetic.h file
int sum(int int_a,int int_b)
{ int add=0;
add=int_a+int_b;
return(add); }
int sub(int int_a,int int_b)
{ int diff=0;
diff= int_a-int_b;
return(diff); }
int mul(int int_a,int int_b)
{ int pro;
pro= int_a*int_b;
return(pro) }
int div(int int_a,int int_b)
{
int quo;
quo= int_a/int_b; }
EXAMPLE
#include<stdio.h>
#include "arithmetic.h"
main()
{
int s,a,b;
scanf("%d%d",&a,&b);
s=sum(a,b);
printf("nSum=%d",n);
}
#define
The #define directive creates
•symbolic constants
•constants represented as symbols
•macros operations defined as symbols.
The #define directive format is
#define identifier replacement-text
When this line appears in a file, all subsequent
occurrences of identifier will be replaced by replacement-
text automatically before the program is compiled.
#define: symbolic constants
For example,
#define PI 3.14159
replaces all subsequent occurrences of the symbolic
constant PI with the numeric constant 3.14159.
Symbolic constants enable you to create a name for a
constant and use the name throughout the program.
If the constant needs to be modified throughout the program,
it can be modified once in the #define directive.
When the program is recompiled, all occurrences of the
constant in the program will be modified accordingly.
#define: macros
A macro is an identifier defined in a #define preprocessor
directive.
As with symbolic constants, the macro-identifier is
replaced in the program with the replacement-text before the
program is compiled.
Macros may be defined with or without arguments.
A macro without arguments is processed like a symbolic
constant.
In a macro with arguments, the arguments are substituted
in the replacement text, then the macro is expanded.
#define: macros
A symbolic constant is a type of macro.
Consider the following macro definition with one argument for
the area of a circle:
#define CIRCLE_AREA( x ) ( ( PI ) * ( x ) * ( x ) )
Wherever CIRCLE_AREA(y) appears in the file, the value of y
is substituted for x in the replacement-text, the symbolic constant
PI is replaced by its value (defined previously) and the macro is
expanded in the program.
The parentheses around each x in the replacement text force the
proper order of evaluation when the macro argument is an
expression.
EXAMPLE
•For example, the statement
area = CIRCLE_AREA( 4 );
is expanded to
area = ( ( 3.14159 ) * ( 4 ) * ( 4 ) );
•For example, the statement
area = CIRCLE_AREA( c + 2 );
is expanded to
area = (( 3.14159 ) * ( c + 2 ) * ( c + 2 ));
which evaluates correctly because the
parentheses force the proper order of evaluation.
#define: macros
If the parentheses are omitted, the macro expansion
is
area = 3.14159 * c + 2 * c + 2;
which evaluates incorrectly as
area = ( 3.14159 * c ) + ( 2 * c ) + 2;
because of the rules of operator precedence.
#define: macros
•Symbolic constants and macros can be discarded by using
the #undef preprocessor directive.
•Directive #undef “undefines” a symbolic constant or macro
name.
•The scope of a symbolic constant or macro is from its
definition until it is undefined with #undef, or until the end
of the file.
•A macro must be undefined before being redefined to a
different value.
•Once undefined, a name can be redefined with #define.
CONDITIONAL COMPILATION
•Conditional compilation enables you to control the
execution of preprocessor directives and the compilation of
program code.
•Each of the conditional preprocessor directives evaluates a
constant integer expression.
•The conditional preprocessor construct is much like the if
selection statement.
CONDITIONAL COMPILATION
•Consider the following preprocessor code:
#if !defined(MY_CONSTANT)
#define MY_CONSTANT 0
#endif
•These directives determine if MY_CONSTANT is defined.
•The expression defined( MY_CONSTANT) evaluates to 1
if MY_CONSTANT is defined; 0 otherwise.
•If the result is 0, !defined(MY_CONSTANT) evaluates to
1 and MY_CONSTANT is defined.
•Otherwise, the #define directive is skipped.
CONDITIONAL COMPILATION
•Every #if construct ends with #endif.
•Directives #ifdef and #ifndef are shorthand for #if defined
and #if !defined.
•During program development, it is often helpful to
“comment out” portions of code to prevent it from being
compiled.
•We can use the following preprocessor construct for the
same:
#if 0
code prevented from compiling
#endif
•To enable the code to be compiled, replace the 0 in the
preceding construct with 1.
#error Pre Processor Directives
•The #error directive
#error tokens
prints an implementation-dependent message
including the tokens specified in the directive.
•The tokens are sequences of characters separated by spaces.
•For example,
#error 1 - Out of range error
•When a #error directive is processed on some systems, the
tokens in the directive are displayed as an error message,
preprocessing stops and the program does not compile.
EXAMPLE
#ifdef OS_MSDOS
#include <msdos.h>
#elifdef OS_UNIX
#include "default.h"
#else
#error Wrong OS!!
#endif
•The # and ## preprocessor operators are available in
Standard C.
•The # operator causes a replacement text token to be
converted to a string surrounded by quotes.
•Example:
#define HELLO(x) printf( "Hello, " #x "n" );
•When HELLO(John) appears in a program file, it is
expanded to
printf( "Hello, " "John" "n" );
•The string "John" replaces #x in the replacement text.
# and # # OPERATORS
•Strings separated by white space are concatenated during
preprocessing, so the preceding statement is equivalent to
printf( "Hello, Johnn" );
•The # operator must be used in a macro with arguments
because the operand of # refers to an argument of the macro.
# and # # OPERATORS
•Consider the following macro definition:
#define TOKENCONCAT(x, y) x ## y
•When TOKENCONCAT appears in the program, its
arguments are concatenated and used to replace the macro.
•For example, TOKENCONCAT(O, K) is replaced by OK in
the program.
•The ## operator must have two operands.
# and # # OPERATORS
•The #line preprocessor directive causes the
subsequent source code lines to be renumbered
starting with the specified constant integer value.
•The directive
#line 100
starts line numbering from 100 beginning with
the next source code line.
•A file name can be included in the #line directive.
LINE NUMBERS
THANK YOU...
Want to learn more about programming or Looking to become a good programmer?
Are you wasting time on searching so many contents online?
Do you want to learn things quickly?
Tired of spending huge amount of money to become a Software professional?
Do an online course
@ baabtra.com
We put industry standards to practice. Our structured, activity based courses are so designed
to make a quick, good software professional out of anybody who holds a passion for coding.
Follow us @ twitter.com/baabtra
Like us @ facebook.com/baabtra
Subscribe to us @ youtube.com/baabtra
Become a follower @ slideshare.net/BaabtraMentoringPartner
Connect to us @ in.linkedin.com/in/baabtra
Thanks in advance.
www.baabtra.com | www.massbaab.com |www.baabte.com
Contact Us
Emarald Mall (Big Bazar Building)
Mavoor Road, Kozhikode,
Kerala, India.
Ph: + 91 – 495 40 25 550
NC Complex, Near Bus Stand
Mukkam, Kozhikode,
Kerala, India.
Ph: + 91 – 495 40 25 550
Cafit Square,
Hilite Business Park,
Near Pantheerankavu,
Kozhikode
Start up Village
Eranakulam,
Kerala, India.
Email: info@baabtra.com

Contenu connexe

Tendances (20)

c-programming
c-programmingc-programming
c-programming
 
Preprocessor
PreprocessorPreprocessor
Preprocessor
 
Preprocessor
PreprocessorPreprocessor
Preprocessor
 
Scope rules : local and global variables
Scope rules : local and global variablesScope rules : local and global variables
Scope rules : local and global variables
 
Programming Fundamentals Functions in C and types
Programming Fundamentals  Functions in C  and typesProgramming Fundamentals  Functions in C  and types
Programming Fundamentals Functions in C and types
 
Strings in C
Strings in CStrings in C
Strings in C
 
Storage class in C Language
Storage class in C LanguageStorage class in C Language
Storage class in C Language
 
Decision making and looping
Decision making and loopingDecision making and looping
Decision making and looping
 
File in C language
File in C languageFile in C language
File in C language
 
C programming - String
C programming - StringC programming - String
C programming - String
 
Recursive Function
Recursive FunctionRecursive Function
Recursive Function
 
Comments in C Programming
Comments in C ProgrammingComments in C Programming
Comments in C Programming
 
Type casting in c programming
Type casting in c programmingType casting in c programming
Type casting in c programming
 
Function in C program
Function in C programFunction in C program
Function in C program
 
How to execute a C program
How to execute a C  program How to execute a C  program
How to execute a C program
 
Functions in c
Functions in cFunctions in c
Functions in c
 
C functions
C functionsC functions
C functions
 
Introduction to c programming
Introduction to c programmingIntroduction to c programming
Introduction to c programming
 
Features of c
Features of cFeatures of c
Features of c
 
Formatted input and output
Formatted input and outputFormatted input and output
Formatted input and output
 

En vedette

En vedette (19)

The C Preprocessor
The C PreprocessorThe C Preprocessor
The C Preprocessor
 
Module 05 Preprocessor and Macros in C
Module 05 Preprocessor and Macros in CModule 05 Preprocessor and Macros in C
Module 05 Preprocessor and Macros in C
 
Macro
MacroMacro
Macro
 
Cp0675 03 may-2012-rm04
Cp0675 03 may-2012-rm04Cp0675 03 may-2012-rm04
Cp0675 03 may-2012-rm04
 
Lecture 4 assembly language
Lecture 4   assembly languageLecture 4   assembly language
Lecture 4 assembly language
 
What is c
What is cWhat is c
What is c
 
SAS Macros
SAS MacrosSAS Macros
SAS Macros
 
System programming
System programmingSystem programming
System programming
 
Ss4
Ss4Ss4
Ss4
 
Assembly Language Lecture 2
Assembly Language Lecture 2Assembly Language Lecture 2
Assembly Language Lecture 2
 
Introduction to systems programming
Introduction to systems programmingIntroduction to systems programming
Introduction to systems programming
 
System Programming Unit II
System Programming Unit IISystem Programming Unit II
System Programming Unit II
 
System Programing Unit 1
System Programing Unit 1System Programing Unit 1
System Programing Unit 1
 
Assembly language programming_fundamentals 8086
Assembly language programming_fundamentals 8086Assembly language programming_fundamentals 8086
Assembly language programming_fundamentals 8086
 
Complexity of Algorithm
Complexity of AlgorithmComplexity of Algorithm
Complexity of Algorithm
 
Time and space complexity
Time and space complexityTime and space complexity
Time and space complexity
 
Assembly Language Lecture 3
Assembly Language Lecture 3Assembly Language Lecture 3
Assembly Language Lecture 3
 
Introduction to C Programming
Introduction to C ProgrammingIntroduction to C Programming
Introduction to C Programming
 
INTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMINGINTRODUCTION TO C PROGRAMMING
INTRODUCTION TO C PROGRAMMING
 

Similaire à Pre processor directives in c

Preprocessor directives in c laguage
Preprocessor directives in c laguagePreprocessor directives in c laguage
Preprocessor directives in c laguageTanmay Modi
 
1 - Preprocessor.pptx
1 - Preprocessor.pptx1 - Preprocessor.pptx
1 - Preprocessor.pptxAlAmos4
 
Chapter 13.1.11
Chapter 13.1.11Chapter 13.1.11
Chapter 13.1.11patcha535
 
6 preprocessor macro header
6 preprocessor macro header6 preprocessor macro header
6 preprocessor macro headerhasan Mohammad
 
Inline functions & macros
Inline functions & macrosInline functions & macros
Inline functions & macrosAnand Kumar
 
Basic structure of c programming
Basic structure of c programmingBasic structure of c programming
Basic structure of c programmingTejaswiB4
 
Basic structure of c programming
Basic structure of c programmingBasic structure of c programming
Basic structure of c programmingTejaswiB4
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAAiman Hud
 
Preprocesser in c++ by thanveer danish
Preprocesser in c++ by thanveer danishPreprocesser in c++ by thanveer danish
Preprocesser in c++ by thanveer danishMuhammed Thanveer M
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)mujeeb memon
 
Unit-1 (introduction to c language).pptx
Unit-1 (introduction to c language).pptxUnit-1 (introduction to c language).pptx
Unit-1 (introduction to c language).pptxsaivasu4
 

Similaire à Pre processor directives in c (20)

C programming session6
C programming  session6C programming  session6
C programming session6
 
PreProcessorDirective.ppt
PreProcessorDirective.pptPreProcessorDirective.ppt
PreProcessorDirective.ppt
 
Preprocessor directives in c laguage
Preprocessor directives in c laguagePreprocessor directives in c laguage
Preprocessor directives in c laguage
 
1 - Preprocessor.pptx
1 - Preprocessor.pptx1 - Preprocessor.pptx
1 - Preprocessor.pptx
 
Chapter 13.1.11
Chapter 13.1.11Chapter 13.1.11
Chapter 13.1.11
 
Preprocesser in c
Preprocesser in cPreprocesser in c
Preprocesser in c
 
6 preprocessor macro header
6 preprocessor macro header6 preprocessor macro header
6 preprocessor macro header
 
Unit 5 Part 1 Macros
Unit 5 Part 1 MacrosUnit 5 Part 1 Macros
Unit 5 Part 1 Macros
 
ANSI C Macros
ANSI C MacrosANSI C Macros
ANSI C Macros
 
Inline functions & macros
Inline functions & macrosInline functions & macros
Inline functions & macros
 
Basic structure of c programming
Basic structure of c programmingBasic structure of c programming
Basic structure of c programming
 
Basic structure of c programming
Basic structure of c programmingBasic structure of c programming
Basic structure of c programming
 
Learning the C Language
Learning the C LanguageLearning the C Language
Learning the C Language
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
Preprocesser in c++ by thanveer danish
Preprocesser in c++ by thanveer danishPreprocesser in c++ by thanveer danish
Preprocesser in c++ by thanveer danish
 
Preprocessor.pptx
Preprocessor.pptxPreprocessor.pptx
Preprocessor.pptx
 
Rr
RrRr
Rr
 
Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)Introduction to the c programming language (amazing and easy book for beginners)
Introduction to the c programming language (amazing and easy book for beginners)
 
C pdf
C pdfC pdf
C pdf
 
Unit-1 (introduction to c language).pptx
Unit-1 (introduction to c language).pptxUnit-1 (introduction to c language).pptx
Unit-1 (introduction to c language).pptx
 

Plus de baabtra.com - No. 1 supplier of quality freshers

Plus de baabtra.com - No. 1 supplier of quality freshers (20)

Agile methodology and scrum development
Agile methodology and scrum developmentAgile methodology and scrum development
Agile methodology and scrum development
 
Best coding practices
Best coding practicesBest coding practices
Best coding practices
 
Core java - baabtra
Core java - baabtraCore java - baabtra
Core java - baabtra
 
Acquiring new skills what you should know
Acquiring new skills   what you should knowAcquiring new skills   what you should know
Acquiring new skills what you should know
 
Baabtra.com programming at school
Baabtra.com programming at schoolBaabtra.com programming at school
Baabtra.com programming at school
 
99LMS for Enterprises - LMS that you will love
99LMS for Enterprises - LMS that you will love 99LMS for Enterprises - LMS that you will love
99LMS for Enterprises - LMS that you will love
 
Php sessions & cookies
Php sessions & cookiesPhp sessions & cookies
Php sessions & cookies
 
Php database connectivity
Php database connectivityPhp database connectivity
Php database connectivity
 
Chapter 6 database normalisation
Chapter 6  database normalisationChapter 6  database normalisation
Chapter 6 database normalisation
 
Chapter 5 transactions and dcl statements
Chapter 5  transactions and dcl statementsChapter 5  transactions and dcl statements
Chapter 5 transactions and dcl statements
 
Chapter 4 functions, views, indexing
Chapter 4  functions, views, indexingChapter 4  functions, views, indexing
Chapter 4 functions, views, indexing
 
Chapter 3 stored procedures
Chapter 3 stored proceduresChapter 3 stored procedures
Chapter 3 stored procedures
 
Chapter 2 grouping,scalar and aggergate functions,joins inner join,outer join
Chapter 2  grouping,scalar and aggergate functions,joins   inner join,outer joinChapter 2  grouping,scalar and aggergate functions,joins   inner join,outer join
Chapter 2 grouping,scalar and aggergate functions,joins inner join,outer join
 
Chapter 1 introduction to sql server
Chapter 1 introduction to sql serverChapter 1 introduction to sql server
Chapter 1 introduction to sql server
 
Chapter 1 introduction to sql server
Chapter 1 introduction to sql serverChapter 1 introduction to sql server
Chapter 1 introduction to sql server
 
Microsoft holo lens
Microsoft holo lensMicrosoft holo lens
Microsoft holo lens
 
Blue brain
Blue brainBlue brain
Blue brain
 
5g
5g5g
5g
 
Aptitude skills baabtra
Aptitude skills baabtraAptitude skills baabtra
Aptitude skills baabtra
 
Gd baabtra
Gd baabtraGd baabtra
Gd baabtra
 

Dernier

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Dernier (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

Pre processor directives in c

  • 1.
  • 3. Disclaimer: This presentation is prepared by trainees of baabtra as a part of mentoring program. This is not official document of baabtra –Mentoring Partner Baabtra-Mentoring Partner is the mentoring division of baabte System Technologies Pvt . Ltd
  • 4. INTRODUCTION The C preprocessor executes before a program is compiled. Some actions it performs are • inclusion of other files in the file being compiled •definition of symbolic constants and macros •conditional compilation of program code Preprocessor directives begin with #.
  • 5. #include It causes a copy of a specified file to be included in place of the directive. The two forms of the #include directive are: #include <filename> #include "filename” The difference between these is in the location the preprocessor begins searches for the file to be included. If the file name is enclosed in quotes, the preprocessor starts searches in the same directory as the file being compiled for the file to be included . This method is normally used to include programmer-defined headers. If the file name is enclosed in angle brackets is used for standard library header. The search is performed in an implementation-dependent manner, normally through predesignated compiler and system directories.
  • 6. EXAMPLE #include<stdio.h> #include<string.h> main() { int n; char s[10]; printf("nEnter the string:n"); scanf("%s",s); n=strlen(s); printf("nLength is:%d",n); }
  • 7. EXAMPLE //arithmetic.h file int sum(int int_a,int int_b) { int add=0; add=int_a+int_b; return(add); } int sub(int int_a,int int_b) { int diff=0; diff= int_a-int_b; return(diff); } int mul(int int_a,int int_b) { int pro; pro= int_a*int_b; return(pro) } int div(int int_a,int int_b) { int quo; quo= int_a/int_b; }
  • 9. #define The #define directive creates •symbolic constants •constants represented as symbols •macros operations defined as symbols. The #define directive format is #define identifier replacement-text When this line appears in a file, all subsequent occurrences of identifier will be replaced by replacement- text automatically before the program is compiled.
  • 10. #define: symbolic constants For example, #define PI 3.14159 replaces all subsequent occurrences of the symbolic constant PI with the numeric constant 3.14159. Symbolic constants enable you to create a name for a constant and use the name throughout the program. If the constant needs to be modified throughout the program, it can be modified once in the #define directive. When the program is recompiled, all occurrences of the constant in the program will be modified accordingly.
  • 11. #define: macros A macro is an identifier defined in a #define preprocessor directive. As with symbolic constants, the macro-identifier is replaced in the program with the replacement-text before the program is compiled. Macros may be defined with or without arguments. A macro without arguments is processed like a symbolic constant. In a macro with arguments, the arguments are substituted in the replacement text, then the macro is expanded.
  • 12. #define: macros A symbolic constant is a type of macro. Consider the following macro definition with one argument for the area of a circle: #define CIRCLE_AREA( x ) ( ( PI ) * ( x ) * ( x ) ) Wherever CIRCLE_AREA(y) appears in the file, the value of y is substituted for x in the replacement-text, the symbolic constant PI is replaced by its value (defined previously) and the macro is expanded in the program. The parentheses around each x in the replacement text force the proper order of evaluation when the macro argument is an expression.
  • 13. EXAMPLE •For example, the statement area = CIRCLE_AREA( 4 ); is expanded to area = ( ( 3.14159 ) * ( 4 ) * ( 4 ) ); •For example, the statement area = CIRCLE_AREA( c + 2 ); is expanded to area = (( 3.14159 ) * ( c + 2 ) * ( c + 2 )); which evaluates correctly because the parentheses force the proper order of evaluation.
  • 14. #define: macros If the parentheses are omitted, the macro expansion is area = 3.14159 * c + 2 * c + 2; which evaluates incorrectly as area = ( 3.14159 * c ) + ( 2 * c ) + 2; because of the rules of operator precedence.
  • 15. #define: macros •Symbolic constants and macros can be discarded by using the #undef preprocessor directive. •Directive #undef “undefines” a symbolic constant or macro name. •The scope of a symbolic constant or macro is from its definition until it is undefined with #undef, or until the end of the file. •A macro must be undefined before being redefined to a different value. •Once undefined, a name can be redefined with #define.
  • 16. CONDITIONAL COMPILATION •Conditional compilation enables you to control the execution of preprocessor directives and the compilation of program code. •Each of the conditional preprocessor directives evaluates a constant integer expression. •The conditional preprocessor construct is much like the if selection statement.
  • 17. CONDITIONAL COMPILATION •Consider the following preprocessor code: #if !defined(MY_CONSTANT) #define MY_CONSTANT 0 #endif •These directives determine if MY_CONSTANT is defined. •The expression defined( MY_CONSTANT) evaluates to 1 if MY_CONSTANT is defined; 0 otherwise. •If the result is 0, !defined(MY_CONSTANT) evaluates to 1 and MY_CONSTANT is defined. •Otherwise, the #define directive is skipped.
  • 18. CONDITIONAL COMPILATION •Every #if construct ends with #endif. •Directives #ifdef and #ifndef are shorthand for #if defined and #if !defined. •During program development, it is often helpful to “comment out” portions of code to prevent it from being compiled. •We can use the following preprocessor construct for the same: #if 0 code prevented from compiling #endif •To enable the code to be compiled, replace the 0 in the preceding construct with 1.
  • 19. #error Pre Processor Directives •The #error directive #error tokens prints an implementation-dependent message including the tokens specified in the directive. •The tokens are sequences of characters separated by spaces. •For example, #error 1 - Out of range error •When a #error directive is processed on some systems, the tokens in the directive are displayed as an error message, preprocessing stops and the program does not compile.
  • 20. EXAMPLE #ifdef OS_MSDOS #include <msdos.h> #elifdef OS_UNIX #include "default.h" #else #error Wrong OS!! #endif
  • 21. •The # and ## preprocessor operators are available in Standard C. •The # operator causes a replacement text token to be converted to a string surrounded by quotes. •Example: #define HELLO(x) printf( "Hello, " #x "n" ); •When HELLO(John) appears in a program file, it is expanded to printf( "Hello, " "John" "n" ); •The string "John" replaces #x in the replacement text. # and # # OPERATORS
  • 22. •Strings separated by white space are concatenated during preprocessing, so the preceding statement is equivalent to printf( "Hello, Johnn" ); •The # operator must be used in a macro with arguments because the operand of # refers to an argument of the macro. # and # # OPERATORS
  • 23. •Consider the following macro definition: #define TOKENCONCAT(x, y) x ## y •When TOKENCONCAT appears in the program, its arguments are concatenated and used to replace the macro. •For example, TOKENCONCAT(O, K) is replaced by OK in the program. •The ## operator must have two operands. # and # # OPERATORS
  • 24. •The #line preprocessor directive causes the subsequent source code lines to be renumbered starting with the specified constant integer value. •The directive #line 100 starts line numbering from 100 beginning with the next source code line. •A file name can be included in the #line directive. LINE NUMBERS
  • 26. Want to learn more about programming or Looking to become a good programmer? Are you wasting time on searching so many contents online? Do you want to learn things quickly? Tired of spending huge amount of money to become a Software professional? Do an online course @ baabtra.com We put industry standards to practice. Our structured, activity based courses are so designed to make a quick, good software professional out of anybody who holds a passion for coding.
  • 27. Follow us @ twitter.com/baabtra Like us @ facebook.com/baabtra Subscribe to us @ youtube.com/baabtra Become a follower @ slideshare.net/BaabtraMentoringPartner Connect to us @ in.linkedin.com/in/baabtra Thanks in advance. www.baabtra.com | www.massbaab.com |www.baabte.com
  • 28. Contact Us Emarald Mall (Big Bazar Building) Mavoor Road, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 NC Complex, Near Bus Stand Mukkam, Kozhikode, Kerala, India. Ph: + 91 – 495 40 25 550 Cafit Square, Hilite Business Park, Near Pantheerankavu, Kozhikode Start up Village Eranakulam, Kerala, India. Email: info@baabtra.com