Why strict aliasing is required in C ?
Last Updated :
08 Jan, 2018
Consider below C program.
#include<stdio.h>
int a = 5;
int * b = &a;
int func( double * b)
{
a = 1;
*b = 5.10;
return (a);
}
int main()
{
printf ( "%d" , func(( double *)&a));
return 0;
}
|
Output :
1717986918
If we call as “func()”it will return constant 1. But it is also possible to call the function as “func((double *)&a)” which was supposed to return 1 but returning something else. The code was made to return constant 1 only! That’s a big problem but STRICT ALIASING fixes it.
Solution :
Use restrict qualifier keyword. It means you promise the compiler that something is not aliased with the pointer restrict keyword. If you break your promise you will only suffer. Please refer restrict keyword in C for details.
Share your thoughts in the comments
Please Login to comment...