Hi,
We have bunch of message levels and depending on whether that level is
turned on, messages of that level are printed. For example, we have
levels like MSG_LOW, MSG_MED etc.
We want to provide a wrapper API on top of this to print various kinds
of messages and map the wrapper API to either MSG_LOW or MSG_MED. For
example, our wrapper API have macros such as
MSG_FUNCTION_EN TRY, MSG_FUNCTION_EX IT, MSG_STATE_CHANG E,
MSG_INVALID_INP UT etc. Whenever a function is called, we call
MSG_FUNCTION_EN TRY macro. This shields the programmer from whether
this kind of messages is mapped to LOW or MED and it allows us to
configure what kind of messages we want to print in various flavors of
a build. In debug build, we might map MSG_FUNCTION_EN TRY to MSG_MED
and in production build, we might map it to MSG_LOW.
I wrote following macros to get this functionality.
#define IS_MSG_LOW_ON 0
#define IS_MSG_MED_ON 1
#define MSG_FUNCTION_EN TRY_LEVEL MSG_MED
#define MSG_FUNCTION_EX IT_LEVEL MSG_MED
#define MSG_FUNCTION_EN TRY(fmt_string, x, y, z) \
#if (IS_ ## MSG_FUNCTION_EN TRY_LEVEL_ ## ON == 1) \
printf(fmt_stri ng, x, y, z);
But this is not working as IS_ ## MSG_FUNCTION_EN TRY_LEVEL_ ## ON is
translated to IS_MSG_FUNCTION _ENTRY_LEVEL_ON instead of IS_MSG_MED_ON.
So how do I get this to work?
Thx,
Srinivas
We have bunch of message levels and depending on whether that level is
turned on, messages of that level are printed. For example, we have
levels like MSG_LOW, MSG_MED etc.
We want to provide a wrapper API on top of this to print various kinds
of messages and map the wrapper API to either MSG_LOW or MSG_MED. For
example, our wrapper API have macros such as
MSG_FUNCTION_EN TRY, MSG_FUNCTION_EX IT, MSG_STATE_CHANG E,
MSG_INVALID_INP UT etc. Whenever a function is called, we call
MSG_FUNCTION_EN TRY macro. This shields the programmer from whether
this kind of messages is mapped to LOW or MED and it allows us to
configure what kind of messages we want to print in various flavors of
a build. In debug build, we might map MSG_FUNCTION_EN TRY to MSG_MED
and in production build, we might map it to MSG_LOW.
I wrote following macros to get this functionality.
#define IS_MSG_LOW_ON 0
#define IS_MSG_MED_ON 1
#define MSG_FUNCTION_EN TRY_LEVEL MSG_MED
#define MSG_FUNCTION_EX IT_LEVEL MSG_MED
#define MSG_FUNCTION_EN TRY(fmt_string, x, y, z) \
#if (IS_ ## MSG_FUNCTION_EN TRY_LEVEL_ ## ON == 1) \
printf(fmt_stri ng, x, y, z);
But this is not working as IS_ ## MSG_FUNCTION_EN TRY_LEVEL_ ## ON is
translated to IS_MSG_FUNCTION _ENTRY_LEVEL_ON instead of IS_MSG_MED_ON.
So how do I get this to work?
Thx,
Srinivas
Comment