C++技法:iguana序列化库中如何实现enum reflection反射
我们知道通过反射可以在运行时获取类名、类型等一些信息,然而c++语言本身没有提供类似java这种反射机制。在阅读iguana开源库时,看到了一种EnumRefection的实现,分享给大家。
iguana 是C++17 实现的header only、跨平台、高性能易用的序列化库,包括xml/json/yaml 的序列化和反序列化。
我们知道通过反射可以在运行时获取类名、类型等一些信息,然而c++语言本身没有提供类似java这种反射机制。在阅读iguana开源库时,看到了一种EnumRefection的实现,分享给大家。
iguana 是C++17 实现的header only、跨平台、高性能易用的序列化库,包括xml/json/yaml 的序列化和反序列化。
在这个例子中,我们将创建一个可执行程序 A
,它使用动态链接库 C
,而 C
本身又依赖于另一个动态链接库 D
。
库 C
和 D
都链接了库 E
,其中库 E
包含一个使用 extern
声明和实现的 const std::string
全局变量。
你在编译开发一个项目时,有遇到过指定了链接库,但是运行时,却报错:未定义某个符号吗?undefined xxx。
在开发中遇到的xxx报错,是经过mangle了的,不方便看,可以采用c++filt工具查看原始符号,命令: c++filt xxx 。
quickcheck
是一个非常强大的工具!quickcheck
是一个基于属性测试(Property-based Testing)的 Rust 库,灵感来自于 Haskell 的 QuickCheck 库。它的核心思想是通过自动生成大量随机输入来测试代码的属性,而不是手动编写具体的测试用例。
前面我们讲解了PIMPL技法,现在又来一个Fast PIMPL,这又是什么东东!从字面意思猜,这肯定是PIMPL的升级版改进版勒,肯定解决了一些PIMPL技法存在的问题。
恭喜你,答对了!!!
bvar是百度开源贡献给Apache的多线程环境下的计数器库。 通过它可以统计计数器、最大值、最小值、windows一段时间累加、除以秒数就是每秒,还有时延、分位值等等。
我每天早上都会打开Github的Trendings板块,了解最新的动态,我相信这是个还不错的习惯。遇到感兴趣的项目我会打开看看源码,学习一下大佬们的写法和实现。
修改github.com/xxx/yyy链接为github1s.com/xxx/yyy,就可以在浏览器打开vscode类似界面阅读代码了。
今天分享的是quill,一个异步低延迟的高效日志库实现。
c++ std::sort函数是经常被使用到的,但是不知道大家注意没有,定义的Compare函数是需要满足一定条件的。这个条件就是:strict weak ordering。