打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C语言中以字符串形式输出枚举变量

https://blog.csdn.net/haifeilang/article/details/41079255

每个枚举常量对应一个整形数字,很多时候可以像整形一样使用,这个大家都知道;但是如果要求打印枚举变量名的字符串,办法也有很多,查看网上方法几乎都需要转换,要么用数组,下面要说的是一种可以算是直接打印的新方法;

  1. #include <stdio.h>
  2. #define ENUM_CHIP_TYPE_CASE(x) case x: return(#x);
  3. enum cvmx_chip_types_enum {
  4. CVMX_CHIP_TYPE_NULL = 0,
  5. CVMX_CHIP_TYPE_DEPRECATED = 1,
  6. CVMX_CHIP_TYPE_OCTEON_SAMPLE = 2,
  7. CVMX_CHIP_TYPE_MAX
  8. };
  9. static inline const char *cvmx_chip_type_to_string(enum cvmx_chip_types_enum type)
  10. {
  11. switch (type)
  12. {
  13. ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_NULL)
  14. ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_DEPRECATED)
  15. ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_OCTEON_SAMPLE)
  16. ENUM_CHIP_TYPE_CASE(CVMX_CHIP_TYPE_MAX)
  17. }
  18. return "Unsupported Chip";
  19. }
  20. int main()
  21. {
  22. cvmx_chip_types_enum a;
  23. while(1)
  24. {
  25. printf("input(0~3):");
  26. scanf("%d",&a);
  27. if(a<CVMX_CHIP_TYPE_NULL||a>CVMX_CHIP_TYPE_MAX)
  28. {
  29. printf("error,you must input number between 0 and 3,please try again!\n\n");
  30. continue;
  31. }
  32. printf("\n");
  33. printf("the result:%s \n\n",cvmx_chip_type_to_string(a));
  34. }
  35. return 0;
  36. }


结果测试:


如何不想全部打印出名字,只想打印出后面几个字符,例如“CVMX_CHIP_TYPE_DEPRECATED”,

我只想要打印后面“DEPRECATED”字符串,上面代码只需修改宏:

#define ENUM_CHIP_TYPE_CASE(x)   case x: return(#x); 改为下面所示

#define ENUM_CHIP_TYPE_CASE(x)   case x: return(#x+15);  //从第16个字符串开始打印,不要前面15个

结果如下:


  

挺实用的技巧吧!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
枚举类型的声明及应用
C语言枚举类型
【C语言笔记】枚举
enum用法 - - JavaEye技术网站
黑马程序员
【C语言核心基础】基本运算、变量、数组、指针、函数、结构体...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服