随笔分类 -  C/CPP

摘要:```cpp #include #include #include #include using namespace std; struct B { int v = 100; ~B() { v = 0; } }; struct A { A(B* p) { aa = p; } B* aa = null 阅读全文
posted @ 2023-08-28 16:24 ijpq 阅读(8) 评论(0) 推荐(0) 编辑
摘要:EXAMPLE ONE template <typename T, T b, uint32_t e> struct pow : std::integral_constant<decltype(b * 1), b * pow<T, b, e - 1>::value> {}; template <typ 阅读全文
posted @ 2023-07-16 15:53 ijpq 阅读(19) 评论(0) 推荐(0) 编辑
摘要:![](https://img2023.cnblogs.com/blog/1481923/202305/1481923-20230531170817218-832032778.png) 阅读全文
posted @ 2023-05-31 17:08 ijpq 阅读(12) 评论(0) 推荐(0) 编辑
摘要:![](https://img2023.cnblogs.com/blog/1481923/202305/1481923-20230510194212392-1846559360.png) ![](https://img2023.cnblogs.com/blog/1481923/202305/1481923-20230510194225583-1336513725.png) 阅读全文
posted @ 2023-05-10 19:42 ijpq 阅读(5) 评论(0) 推荐(0) 编辑
摘要:静态变量a地址的高20位加载到a5中, a5的值(static a的高20位地址) + 偏移值(static a的低12位地址) -> 加载到a5中(现在a5中保存了静态变量a的32位地址) 把静态变量a的地址写入到返回值中。 如果声明为返回类型为&,实际也一样 如果使用返回void的方式来实现静态 阅读全文
posted @ 2023-04-25 15:43 ijpq 阅读(8) 评论(0) 推荐(0) 编辑
摘要:![](https://img2023.cnblogs.com/blog/1481923/202304/1481923-20230423213217561-1145884264.png) 阅读全文
posted @ 2023-04-23 21:32 ijpq 阅读(16) 评论(0) 推荐(0) 编辑
摘要:![](https://img2023.cnblogs.com/blog/1481923/202304/1481923-20230423212942252-880033108.png) 阅读全文
posted @ 2023-04-23 21:29 ijpq 阅读(26) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <iomanip> #include <type_traits> class A {}; enum E : int {}; template <class T> T f(T i) { static_assert(std::is_integra 阅读全文
posted @ 2023-02-14 19:01 ijpq 阅读(34) 评论(0) 推荐(0) 编辑
摘要:这里用一个lambda来作为shared ptr的删除器,lambda没有做任何操作,保证这份数据的内存管理不受这个sharedptr影响。 编译器报错:static assertion failed due to requirement ***deleter expression is well- 阅读全文
posted @ 2023-02-11 10:05 ijpq 阅读(88) 评论(0) 推荐(0) 编辑
摘要:/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger t 阅读全文
posted @ 2023-02-06 17:12 ijpq 阅读(14) 评论(0) 推荐(0) 编辑
摘要:只是将p指针的操作改为store byte,即reinterpret之后的操作指令 阅读全文
posted @ 2023-01-18 11:40 ijpq 阅读(16) 评论(0) 推荐(0) 编辑
摘要:ref : https://github.com/wuye9036/CppTemplateTutorial#323-%E7%89%B9%E5%8C%96%E4%B8%80%E4%BA%9B%E5%85%B6%E5%AE%83%E9%97%AE%E9%A2%98 这段就是说: 这个int实参在替换第一 阅读全文
posted @ 2023-01-16 23:29 ijpq 阅读(20) 评论(0) 推荐(0) 编辑
摘要:模板中的行参类型推断会省略引用 在这两种模板中,行参的引用都会在推断过程中被省略 template<typename T> //template A void f(T &param); template<typename T> // template B void f(T param); 而temp 阅读全文
posted @ 2023-01-15 18:54 ijpq 阅读(13) 评论(0) 推荐(0) 编辑
摘要:普通enum enum中的枚举值位于enum本身所在的作用域中 这两个enum都位于全局作用域中,因此A和B的枚举值也位于全局作用域中,就会引发命名冲突 而把A和B分离在两个作用域中,就不会引发命名冲突 存在枚举值向整数类型的隐式转换,但不存在整数类型向枚举的隐式转换 enum -> integer 阅读全文
posted @ 2023-01-15 16:47 ijpq 阅读(36) 评论(0) 推荐(0) 编辑
摘要:https://stackoverflow.com/questions/47666913/template-specialization-for-enum-values https://stackoverflow.com/questions/1619993/template-specializati 阅读全文
posted @ 2023-01-13 11:25 ijpq 阅读(21) 评论(0) 推荐(0) 编辑
摘要:NV12属于yuv color space,具有如下的编码格式,基本上yuv420都是这样的编码格式,比如YUV_I420就是上面仍然是Y,下面是先U,然后再V。U占{IMAGE_WIDTH/2,IMAGE_HEIGHT/2}块数据,V同理。具体见:https://wiki.videolan.org 阅读全文
posted @ 2023-01-13 11:24 ijpq 阅读(1362) 评论(0) 推荐(0) 编辑
摘要:其实就是翻译了一下cmake文档中的"cmake-language" cmake中的文件使用"cmake语言"来写 一个项目中的cmake文件有如下几种形式 当cmake处理一个项目时,起始点是项目根目录中的cmakelist.txt。这个文件包括了整体的编译细节,其中通过add_subdirect 阅读全文
posted @ 2022-12-29 15:32 ijpq 阅读(64) 评论(0) 推荐(0) 编辑
摘要:这一条还是比较简单的,就是说不要返回指向对象内部成分的引用、指针等,即便这个引用可能声明为const(或指针指向了const对象),对内部成分做了保护,但仍有可能造成handle空悬(称为danling)。 为此,举了一个例子: class GUIobject {}; const Rectangle 阅读全文
posted @ 2022-11-20 23:48 ijpq 阅读(18) 评论(0) 推荐(0) 编辑
摘要:旧式C转型: T(expression)/(T)expression 新式C++转型:static_cast/dynamic_cast/const_cast/reinterpret_cast 只能通过const_cast去掉const dynamic_cast成本很高,很多编译器的实现都是用了字符串 阅读全文
posted @ 2022-11-20 11:18 ijpq 阅读(18) 评论(0) 推荐(0) 编辑
摘要:变量的类型带有构造和析构时,定义一个变量会承受这两个成本,因此在使用时再定义它。例如,如果执行过程中可能被exception中断导致预先定义的变量没有使用,那么这个成本最好不要提前承担。 再比如,不要多承担一次赋值的成本。直接在构造时初始化预期的值。 一种常见的场景:for循环中需要使用某个变量,是 阅读全文
posted @ 2022-11-06 19:23 ijpq 阅读(19) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示