For a lot of function calls in a C app that needs some degree of debugging I wanted to add a macro to ease the typing that I had to do.
right now I am calling a function like this:
aDebugFunction(&ptrToFunction, __LINE__, "ptrToFunction", param1, param2, etc)
So I thought lets write a macro that does the first 3 parameters for me, like this:
#define SOMEDEFINE(x) &x, __LINE__, "x"
However, as most of you will immediately know, this won’t work it won’t replace “x” with the name that x has been given but will just pass “x” as 3rd parameter.
My knowledge of this preprocessor macro happening stuff is quite limited and thus my googling-ability is also quite useless due to not knowing where to search for exactly.
I hope one of you guys/girls could give me either a solution or point me in the right direction.
You need to use the
#convert token to string command of the preprocessor. You should define your second macro this way:Or if
xcan also be a macro call, and you want the string to contains the expansion of the macro, you need to use an auxiliary macro:For example, if you have the following code:
Then, with the first macro, it will expand to
While, with the second macro, it will expand to: