#include enum.h #include iostream #include assert.h BETTER_ENUM(Word, int, Hello, World) BETTER_ENUM(Channel, int, Cyan 1, Magenta, Yellow, Black) BETTER_ENUM(Channel2, int, Red, Green, Blue) // We will create a map from this function: constexpr const char* describe(Channel2 channel) { switch (channel) { case Channel2::Red: return the red channel; case Channel2::Green: return the green channel; case Channel2::Blue: return the blue channel; } return needed for gcc 5; } void selfValue() { // Here is the map. The actual type is better_enums::mapChannel2, const char*. constexpr auto descriptions better_enums::make_map(describe); std::cout descriptions[Channel2::Red] std::endl; std::cout descriptions.from_enum(Channel2::Red) std::endl; std::cout descriptions.to_enum(the green channel) std::endl; auto not_a_literal std::string(the blue channel); std::cout descriptions.to_enum(not_a_literal.c_str()) std::endl; } void test() { //test(); std::cout (Word::Hello)._to_string() , (Word::World)._to_string() ! std::endl; // There are three functions: // // 1. ._to_string // 2. ::_from_string // 3. ::_from_string_nothrow // 1. ::_from_string_nocase // 2. ::_from_string_nocase_nothrow Channel channel Channel::Cyan; std::cout channel._to_string() ; channel Channel::_from_string(Magenta); std::cout channel._to_string() ; better_enums::optionalChannel maybe_channel Channel::_from_string_nothrow(Yellow); if (!maybe_channel) std::cout error; else std::cout maybe_channel-_to_string() ; channel Channel::_from_string_nocase(cYaN); channel Channel::_from_integral(2); channel Channel::_from_integral_unchecked(0); std::cout channel._to_integral() ; // check assert(Channel::_is_valid(3)); assert(Channel::_is_valid(Magenta)); assert(Channel::_is_valid_nocase(cYaN)); // Iteration for (size_t index 0; index Channel::_size(); index) { const char* name Channel::_names()[index]; Channel channel Channel::_values()[index]; std::cout channel._to_integral() ; } // 自定义字符串映射 selfValue(); std::cout Channel2::Red std::endl; //Channel2::_size() Channel2::_name() } //C20 #include iostream #include string #include type_traits // C20反射假设 template typename T std::string enumToString(T e) { // 假设有一个名为getEnumName的反射函数 return getEnumName(e); } // 示例枚举 enum class MyEnum { Value1, Value2, Value3, }; int main() { MyEnum myValue MyEnum::Value2; std::cout Enum as string: enumToString(myValue) std::endl; return 0; }GitHub - aantron/better-enums: C compile-time enum to string, iteration, in a single header fileGitHub - Neargye/magic_enum: Static reflection for enums (to string, from string, iteration) for modern C, work with any enum type without any macro or boilerplate code创作不易小小的支持一下吧
企业数字化 ERP 产品动态
相关推荐
机器人视觉项目从进场到交付的避坑指南:标定、通信与联调实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 5:01:43
脉冲线性调频雷达信号处理全链路解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:50:28
轻量级平台监控雷达系统搭建实战:指标采集到告警通知全链路 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 21:44:25
中级消防员证当电工证怎么用?工地太忙根本没时间复习考试 中级消防员证当电工证怎么用?工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,很多人手里拿着中级消防员证却想当电工,结果发现证书根本不通用。这事儿真不是你一个人在担心,我见过太多人踩了同样的坑。今天就来说说【中级消防员证当电工证】这件… · 2026/11/7 19:44:48
高压电工证作业怎么考?学历不高也能拿全国通用证书 高压电工证作业怎么考?学历不高也能拿全国通用证书 你是不是也担心自己学历不高,怕报不了高压电工证作业?其实, 全国通用 的高压电工证并不看你学历高低,而是看你有没有实际操作能力和相关经验。只要符合条件,哪怕你是初中毕业,一样可以报名考试,拿… · 2026/11/7 19:44:48
兴县电工证培训机构报名费多少钱,电子证书怎么考得快 兴县电工证培训机构报名费多少钱,电子证书怎么考得快 工地太忙根本没时间复习考试,电工证又不能少,这事儿谁懂啊!很多工人都是边干活边备考,压力大、时间紧,还怕考不过。但你知道吗,现在的电工证都是 电子证书… · 2026/11/7 19:44:48
3个避坑技巧:高压电工证培训图片千万别踩坑,报名前看这篇就够了 3个避坑技巧:高压电工证培训图片千万别踩坑,报名前看这篇就够了 怕考不过白交培训费?高压电工证培训图片千万别踩坑,选错机构直接血亏!现在市面上培训机构五花八门,真假难辨,很多人花了几千块培训费,结果考试挂了,钱打水漂不说,时间也浪费了。本文… · 2026/11/7 19:44:48
电工证征兵算技能吗?证书过期了不知道怎么复审延期保姆级教程 电工证征兵算技能吗?证书过期了不知道怎么复审延期保姆级教程 证书过期了不知道怎么复审延期?这事儿真的不能拖,不然不仅影响工作,还可能面临法律责任。别急,本文从开封中小施工企业负责人的角度出发,给你一份 保姆级教程… · 2026/11/7 19:44:48
高压电工证作业官方回应:外省证书如何转过来?真实案例教你避坑 高压电工证作业官方回应:外省证书如何转过来?真实案例教你避坑 之前考的证在外省能不能转过来?这个问题困扰了太多人,尤其是像我这样的信阳房建工程从业者。去年我在郑州做了一个项目,临时被安排去处理高压线路故障,结果现场要求必须持本地高压电工证,… · 2026/11/7 19:43:48
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41
电工作业提示版通过率揭秘:怎么考才能一次过? 电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41
电工证年审报名千万别踩坑 外省证转过来要搞清这几点 电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23