随笔分类 - 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
阅读全文
摘要: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
阅读全文
摘要:
阅读全文
摘要: 
阅读全文
摘要:静态变量a地址的高20位加载到a5中, a5的值(static a的高20位地址) + 偏移值(static a的低12位地址) -> 加载到a5中(现在a5中保存了静态变量a的32位地址) 把静态变量a的地址写入到返回值中。 如果声明为返回类型为&,实际也一样 如果使用返回void的方式来实现静态
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:#include <iostream> #include <iomanip> #include <type_traits> class A {}; enum E : int {}; template <class T> T f(T i) { static_assert(std::is_integra
阅读全文
摘要:这里用一个lambda来作为shared ptr的删除器,lambda没有做任何操作,保证这份数据的内存管理不受这个sharedptr影响。 编译器报错:static assertion failed due to requirement ***deleter expression is well-
阅读全文
摘要:/****************************************************************************** Welcome to GDB Online. GDB online is an online compiler and debugger t
阅读全文
摘要:只是将p指针的操作改为store byte,即reinterpret之后的操作指令
阅读全文
摘要: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实参在替换第一
阅读全文
摘要:模板中的行参类型推断会省略引用 在这两种模板中,行参的引用都会在推断过程中被省略 template<typename T> //template A void f(T ¶m); template<typename T> // template B void f(T param); 而temp
阅读全文
摘要:普通enum enum中的枚举值位于enum本身所在的作用域中 这两个enum都位于全局作用域中,因此A和B的枚举值也位于全局作用域中,就会引发命名冲突 而把A和B分离在两个作用域中,就不会引发命名冲突 存在枚举值向整数类型的隐式转换,但不存在整数类型向枚举的隐式转换 enum -> integer
阅读全文
摘要:https://stackoverflow.com/questions/47666913/template-specialization-for-enum-values https://stackoverflow.com/questions/1619993/template-specializati
阅读全文
摘要:NV12属于yuv color space,具有如下的编码格式,基本上yuv420都是这样的编码格式,比如YUV_I420就是上面仍然是Y,下面是先U,然后再V。U占{IMAGE_WIDTH/2,IMAGE_HEIGHT/2}块数据,V同理。具体见:https://wiki.videolan.org
阅读全文
摘要:其实就是翻译了一下cmake文档中的"cmake-language" cmake中的文件使用"cmake语言"来写 一个项目中的cmake文件有如下几种形式 当cmake处理一个项目时,起始点是项目根目录中的cmakelist.txt。这个文件包括了整体的编译细节,其中通过add_subdirect
阅读全文
摘要:这一条还是比较简单的,就是说不要返回指向对象内部成分的引用、指针等,即便这个引用可能声明为const(或指针指向了const对象),对内部成分做了保护,但仍有可能造成handle空悬(称为danling)。 为此,举了一个例子: class GUIobject {}; const Rectangle
阅读全文
摘要:旧式C转型: T(expression)/(T)expression 新式C++转型:static_cast/dynamic_cast/const_cast/reinterpret_cast 只能通过const_cast去掉const dynamic_cast成本很高,很多编译器的实现都是用了字符串
阅读全文
摘要:变量的类型带有构造和析构时,定义一个变量会承受这两个成本,因此在使用时再定义它。例如,如果执行过程中可能被exception中断导致预先定义的变量没有使用,那么这个成本最好不要提前承担。 再比如,不要多承担一次赋值的成本。直接在构造时初始化预期的值。 一种常见的场景:for循环中需要使用某个变量,是
阅读全文