2014年11月13日15: 17: 20 haifeilang阅读次数: 6295
每个枚举常量都对应一个整数. 很多时候它可以像整数一样使用. 每个人都知道这一点;但是,如果要打印枚举变量名称的字符串,则有很多方法. 查看方法几乎需要转换. 要么使用数组,以下是可以视为直接打印的新方法;
#将以字符串形式返回以下内容
如果要将#之后的内容用作宏,则需要使用两层宏扩展,并且该宏使用的宏中的每个字符都将用作返回字符串的一部分. 如
printf("10->%s\r\n", MY_DEFINE2(MY_STRING2));
也就是说:
#define MY_DEFINE(R) #R
#define MY_DEFINE2(R) MY_DEFINE(R) #include
#define MY_INT 7777
#define MY_STRING "9999"
#define MY_STRING2 "9999\"8OK"000(888)
#define ENUM_CHIP_TYPE_CASE(x) case x: return(#x);
#define MY_DEFINE(R) #R
#define MY_DEFINE2(R) MY_DEFINE(R)
enum cvmx_chip_types_enum {
CVMX_CHIP_TYPE_NULL = ,
CVMX_CHIP_TYPE_DEPRECATED = ,
CVMX_CHIP_TYPE_OCTEON_SAMPLE = ,
CVMX_CHIP_TYPE_MAX
};
static inline const char *cvmx_chip_type_to_string(enum cvmx_chip_types_enum type)
{
switch (type)
{
ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_NULL)
ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_DEPRECATED)
ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_OCTEON_SAMPLE)
ENUM_CHIP_T