Course Content
C Preprocessing
C Preprocessing
Stringify Operators
Stringify operator #
The # operator is used to convert a macro argument into a string literal. This means that if you pass any value to the macro, it will be converted to a string.
Here is an example of usage:
main
#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); return 0; }
The #x
operator in the SQR macro is used to turn the x
argument into a string. When you pass the j
variable to the macro, #x
produces the string "j" (i.e. the variable name), not its value.
Thus, in the line
python
#x
causes the variable name to be included in the output, and x
passes its value (in this case, 5).
If you use a number as an argument, #x
will turn the number into a string and then treat it as a number:
main
#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); SQR (54); // number as argument return 0; }
Token Pasting operator ##
The ##
operation combines two tokens into one.
main
#include <stdio.h> #define CONCAT(x, y) x##y int main() { int myVariable = 10; // variable named `myVariable` printf("%d\n", CONCAT(my, Variable)); // Result: 10 return 0; }
The CONCAT(x, y)
macro concatenates the tokens my
and Variable
, which results in the name myVariable
- just like a variable name.
When you call CONCAT(x, y)
, the preprocessor replaces it with myVariable
, and you can access the value of myVariable
.
Swipe to start coding
- Complete the
CREATE_VAR
macro, which will concatenate the tokenstoken1
andtoken2
; - Use the created macro to create the variable "myVariable";
- Specify the name of the variable whose contents you want to display on the screen.
Solution
Thanks for your feedback!
Stringify Operators
Stringify operator #
The # operator is used to convert a macro argument into a string literal. This means that if you pass any value to the macro, it will be converted to a string.
Here is an example of usage:
main
#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); return 0; }
The #x
operator in the SQR macro is used to turn the x
argument into a string. When you pass the j
variable to the macro, #x
produces the string "j" (i.e. the variable name), not its value.
Thus, in the line
python
#x
causes the variable name to be included in the output, and x
passes its value (in this case, 5).
If you use a number as an argument, #x
will turn the number into a string and then treat it as a number:
main
#include <stdio.h> #define SQR(x) printf("Square " #x " = %d\n", ((x)*(x))) int main() { int j = 5; SQR(j); SQR (54); // number as argument return 0; }
Token Pasting operator ##
The ##
operation combines two tokens into one.
main
#include <stdio.h> #define CONCAT(x, y) x##y int main() { int myVariable = 10; // variable named `myVariable` printf("%d\n", CONCAT(my, Variable)); // Result: 10 return 0; }
The CONCAT(x, y)
macro concatenates the tokens my
and Variable
, which results in the name myVariable
- just like a variable name.
When you call CONCAT(x, y)
, the preprocessor replaces it with myVariable
, and you can access the value of myVariable
.
Swipe to start coding
- Complete the
CREATE_VAR
macro, which will concatenate the tokenstoken1
andtoken2
; - Use the created macro to create the variable "myVariable";
- Specify the name of the variable whose contents you want to display on the screen.
Solution
Thanks for your feedback!