This directive provides some additional information to the compiler and it is also used to turn on or off certain special features. For example, #pragma startup and #pragma exit were used to call specific functions during program entry (before main()) and exit(after main()) correspondingly.
Example C program to illustrate #pragma startup and #pragma exit:
#include <stdio.h>
void in() {
printf("#pragma start in\n");
printf("Inside in\n");
}
void out(){
printf("#pragma exit out\n");
printf("Inside out()\n");
}
#pragma startup in
#pragma exit out
int main() {
printf("I am inside main function\n");
printf("Going out of main()\n");
return 0;
}
Output:
#pragma start in
Inside in
I am inside main function
Going out of main()
#pragma exit out
Inside out()
#pragma warn directive can be used to suppress specific warning as follows.
#pragma warn -rvl:
suppresses warnings related to return values
#pragma warn -par:
suppresses warnings related to parameters like unused parameters.
suppresses warnings related to parameters like unused parameters.
#pragma warn -rch:
suppress warning related to unreachable codes.
suppress warning related to unreachable codes.
Example C program to illustrate #pragma warn:
#include <stdio.h>
#pragma warn -rvl
#pragma warn -par
#pragma warn -rch
int retval() {
printf("missing to return value\n");
}
int unused_para(int a) {
printf("I m not using my parameter value\n");
return 0;
}
int unreachable_code() {
printf("have some code after return statment\n");
return 0;
printf("Code after return statement\n");
printf("Unreachable code\n");
}
int main() {
retval();
unused_para(8);
unreachable_code();
return 0;
}
Output:
jp@jp-VirtualBox:~/$ gcc pragmawarn.c
jp@jp-VirtualBox:~/cpgms/$ ./a.out
missing to return value
I m not using my parameter value
have some code after return statment
jp@jp-VirtualBox:~/cpgms/$ ./a.out
missing to return value
I m not using my parameter value
have some code after return statment
If we check the above output, there won't be any warning messages. This is due to the usage of #pragma warn. If we remove those three pragma directives in our program, we will get warnings for unreachable code, unused parameters etc.
No comments:
Post a Comment