Is is possible to print to stderr the value of a preprocessor variable in C? For example, what I have right now is:
#define PP_VAR (10)
#if (PP_VAR > 10)
#warning PP_VAR is greater than 10
#endif
But what I'd like to do is:
#define PP_VAR (10)
#if (PP_VAR > 10)
#warning PP_VAR=%PP_VAR%
#endif
Is something like this possible in C?
Many C compilers support
#warning
(but it is not defined by the C standard).However, GCC at least does not do pre-processing on the data that follows, which means it is hard to see the value of a variable.
GCC produces:
This works with GCC 4.4.3:
yields:
Well, what you are doing is actually non-standard. Firstly, the "#warning" or "#warn" directive is not standard. Secondly, when using the preprocessor, the line must begin with the pound symbol, without any spaces:
Since you are already using a non-standard extension, you will need to look up the documentation of the particular preprocessor/compiler that you are using to see what it says about "#warning".
You can print out the value of a preprocessor variable under visual studio. The following prints out the value of _MSC_VER:
Not sure how standard this is though.
Use the preprocessor token-pasting operator: ##TOKEN_NAME
As previously noted, the preprocessor directives you are using are non-standard, so YMMV.