There are total six conditional compilation directives. There are:
(a)#if
(b)#elif
(c)#else
(d)#endif
(e)ifdef
(f)ifndef
#if directive :
It is conditional compilation directive. That is if condition is true then it will compile the c programming code otherwise it will not compile the c code.
Syntax 1:
#if <Constant_expression>
-------------
-------------
#endif
If constant expression will return 0 then condition will ture if it will return any non zero number condition will true.
Example:
#include<stdio.h>
#if 0
int main(){
printf("HELLO WORLD");
return 0;
}
#endif
Output: Run time error, undefined symbol _main
Explanation: Due to zero as a constant expression in #if condition will false. So c code inside the #if condition will not execute. As we know without any main function we cannot execute any code.
We can also write #else in the #if directive. #else directive will only execute if condition is false.
Syntax 2:
#if <Constant_expression>
-----------------
-----------------
#else
-----------------
-----------------
#endif
Example:
#include<stdio.h>
#if(10)
int main(){
printf("errorandexception.blogspot.com");
return 0;
}
#else
int main(){
We can write any thing
5= a int;
if(for(while(1);;));
++5;
10=24;
return 0;
}
#endif
Output: errorandexception.blogspot.com
Explanation: 10 is non zero integer constant. So #if condition is true.
Example:
#include<stdio.h>
#if -2
int main(){
printf("HELLO WORLD");
return 0;
}
#else
int main(){
printf("errorandexception.blogspot.com");
return 0;
}
#endif
Output: HELLO WORLD
Explanation: -2 is non zero number so #if condition is true.
Note: Consonant expression in #if condition should not include any c programming variable since all preprocessor directives execute just before the actual c code.
For example:
#include<stdio.h>
int main(){
int var = 5;
#if var
printf("errorandexception.blogspot.com");
#else
printf("cquestionbank.blogspot.com");
#endif
return 0;
}
Output: cquestionbank.blogspot.com
Explanation: Directive #if will not think expression constant var as integer variable and also it will not throw an error. Then what is var for directive #if?
Directive #if will treat var as underfed macro constant. In c any underfed macro constant return zero so #else directive will execute. So proper way of above c code is:
#include<stdio.h>
#define var 10
int main(){
#if var
printf("errorandexception.blogspot.com");
#else
printf("cquestionbank.blogspot.com");
#endif
return 0;
}
Output: errorandexception.blogspot.com
Explanation: Macro constant var will be replaced 10. Since 10 is non-zero number so #if part will execute.
Note: Constant expression in #if directive cannot be string constant. It can be character constant which returns its ASCII value to directive.
2 comments:
thanks ..this site solved many of my doubts
very good explanation with usage in example
Post a Comment