In the C programming language (after 99 standard), a new keyword is introduced known as restrict.
- restrict keyword is mainly used in pointer declarations as a type qualifier for pointers.
- It doesn’t add any new functionality. It is only a way for programmer to inform about an optimizations that compiler can make.
- When we use restrict with a pointer ptr, it tells the compiler that ptr is the only way to access the object pointed by it and compiler doesn’t need to add any additional checks.
- If a programmer uses restrict keyword and violate the above condition, result is undefined behavior.
- restrict is not supported by C++. It is a C only keyword.
// C program to use restrict keyword. #include <stdio.h> // Note that the purpose of restrict is to // show only syntax. It doesn't change anything // in output (or logic). It is just a way for // programmer to tell compiler about an // optimization void use( int * a, int * b, int * restrict c) { *a += *c; // Since c is restrict, compiler will // not reload value at address c in // its assembly code. Therefore generated // assembly code is optimized *b += *c; } int main( void ) { int a = 50, b = 60, c = 70; use(&a, &b, &c); printf ( "%d %d %d" , a, b, c); return 0; } |
Output:
120 130 70
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
leave a comment
0 Comments