Do you know the const qualifier? If you’re reading this article, I believe your answer will be Yes.
Here I will not discuss how to use the const keyword and what is the const keyword. But I will discuss how to know a variable is const qualified or not.
➤ How to check a variable is const qualified in C?
➤ What is the way of checking if a variable is constant qualified?
➤ How do you know if a variable is constant in C?
If the above-mentioned questions are coming to your mind, then you are at the right place. Here I will explain with programming how to check a variable is const.
C program to check a variable is const qualified:
We will use here the _Generic keyword (generic-selection) to differentiate the const and non-const variables.
Below I have written a macro that will check const and non-const for char, int, and float. If you want to check other data types, then you have to modify the macro according to your use. So let’s see the macro.
#define __is_constant(X) _Generic((&X), \ const int *: "a const int", \ int *: "a non-const int",\ const char *: "a const char", \ char *: "a non-const char",\ const float *: "a const float", \ float *: "a non-const float",\ default: "unknown")
Note: Macro will only work the compiler supported C11 or above because _Generic Keyword
introduce in C11.
Check int:
You can see in the below code we are differentiating const and non-const using the above macro. This code will
#include <stdio.h> #define __is_constant(X) _Generic((&X), \ const int *: "a const int", \ int *: "a non-const int",\ const char *: "a const char", \ char *: "a non-const char",\ const float *: "a const float", \ float *: "a non-const float",\ default: "unknown") int main() { const int data1 = 1; int data2 = 1; //check data1 printf("Variable data1 is %s\n", __is_constant(data1)); //check data2 printf("Variable data2 is %s\n", __is_constant(data2)); return 0; }
Output:
Variable data1 is a const int Variable data2 is a non-const int
Check char:
Now finding const and non-const of char type.
#include <stdio.h> #define __is_constant(X) _Generic((&X), \ const int *: "a const int", \ int *: "a non-const int",\ const char *: "a const char", \ char *: "a non-const char",\ const float *: "a const float", \ float *: "a non-const float",\ default: "unknown") int main() { const char data1 = 1; char data2 = 1; //check data1 printf("Variable data1 is %s\n", __is_constant(data1)); //check data2 printf("Variable data2 is %s\n", __is_constant(data2)); return 0; }
Output
:
Variable data1 is a const char Variable data2 is a non-const char
Similarly, above code, you can check for the float.
Now you are thinking about what changes are required if want to check only double.
So don’t worry, as I have mentioned above you only need to modify the macro, like the below example.
#define __is_constant(X) _Generic((&X), \ const double *: "a const double", \ double *: "a non-const double",\ default: "unknown")
Now your macro is ready to check double.
Recommended Post
- C Programming Courses And Tutorials
- CPP Programming Courses And Tutorials.
- Difference between macro constant and const variable.
- typedef vs #define.
- You should know the volatile Qualifier.
- 100 embedded C Interview Questions.
- 100 C interview Questions.
- Important const qualifier interview Questions.
- Difference between const qualifier and volatile qualifier.
- Question-Related to const.
- Interview questions on bitwise operators in C.
- C format specifiers.