![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 53
sky527759
这个作者很懒,什么都没留下…
展开
-
C语言字节对齐问题详解
C语言字节对齐问题详解原创 2021-10-28 11:47:52 · 116 阅读 · 0 评论 -
宏参数的prescan和变参宏和接口宏
宏参数的prescan变参宏n接口宏宏参数的prescanprescan的定义:当一个宏参数被放进宏体时,这个宏参数会首先被全部展开(有例外,见下文)。当展开后的宏参数被放进宏体时, 预处理器对新展开的宏体进行第二次扫描,并继续展开。例如:#define PARAM( x ) x #define ADDPARAM( x ) INT_##x PARAM( ADDPARAM( 1 ) );因为ADDPARAM( 1 ) 是作为PARAM的宏参数,所以先将ADDPARAM( 1 )展开为INT_转载 2021-04-04 20:11:22 · 311 阅读 · 0 评论 -
C++, WaitGroup, like golang sync.WaitGroup
//C++ WaitGroup like golang sync.WaitGroupclass WaitGroup {public: void Add(int incr = 1) { counter += incr; } void Done() { if (--counter <= 0) cond.notify_all(); } void Wait() { std::unique_lock<std::mutex> lock(mutex);原创 2020-06-18 22:59:51 · 521 阅读 · 4 评论 -
C++, ScopeGuard or defer
//C++ defer(use RAII) like golang defer, but not support FILO and Only support one funcclass defer final {public: template <typename Fun> //fn must not throw explicit defer(Fun &&fn) : fn_(std::forward<Fun>(fn)) {} defer(原创 2020-06-18 22:57:15 · 128 阅读 · 0 评论 -
C++/C与汇编: 大小端, printf格式化数据出入栈, 64bit数据类型应用在32bit程序避坑
大小端:大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低,和我们的逻辑方法一致。比如整形十进制数字...原创 2019-12-04 15:55:19 · 385 阅读 · 0 评论 -
cnbloger: 北岛知寒, C++ - 虚基类、虚函数与纯虚函数; csdner: Hsuxu, C++虚基类的实现机制
If the author of the article is not allowed to reprint, this article will be deletedC++ - 虚基类、虚函数与纯虚函数:https://www.cnblogs.com/crazyacking/p/5265634.htmlC++虚基类的实现机制:https://blog.csdn.net/Hsuxu/art...转载 2019-12-03 19:11:17 · 145 阅读 · 0 评论 -
csdner: china_jeffery, C++默认构造函数; csdner: thief thief, 什么情况下C++编译器会生成默认的构造函数
C++默认构造函数:https://blog.csdn.net/china_jeffery/article/details/79288103什么情况下C++编译器会生成默认的构造函数:https://blog.csdn.net/zyl_1102179268/article/details/60370626conclusion:编译器合成的默认构造函数仅仅调用类成员对象的默认构造函数,...转载 2019-12-03 18:57:17 · 159 阅读 · 0 评论 -
C/C++-tips
短路判断模拟if-else, for example: calculate 1+2+3+…+n#ifdef __tmain #define debug cout#else #define debug 0 && cout#endif // __tmainclass Solution{public: int SumRecursion(int n...原创 2019-11-29 08:48:51 · 172 阅读 · 0 评论 -
csdner: 帅地, 【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下.位运算很多情况下都是很二进制扯上关系的,所以我们要判断是否是否位运算,很多情况下都会把他们拆分成二进制,然后观察特性,或者就是利用与,或, 非,异或, 移位的特性来观察,总之,我觉得多看一些例子,加上自己多动手,就比较容易上手了。所以呢,继续往下看1、判断奇偶数判断一个数是基于还是偶数,一般的做法的代码如下if( n % ...转载 2019-11-27 23:23:39 · 289 阅读 · 0 评论 -
C++-new-fail-and-handle-exception
conclusion:当使用new申请一块内存失败时,抛出异常std::bad_alloc是C++标准中规定的标准行为,所以推荐使用try{ p = new int[10000000]; } catch( std::bad_alloc ) { … }的处理方式。但是在一些老旧的编译器中,却不支持该标准,它会返回NULL,此时具有C传统的判断申请结果形式代码便起了作用。所以,要针对不同的情形采取合...转载 2019-11-27 16:29:46 · 244 阅读 · 0 评论 -
关于在enum中使用#define的意义
real source: http://bbs.chinaunix.net/thread-795201-1-1.html以下一段代码来自于linux中的pthread.henum{PTHREAD_CANCEL_ENABLE,#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLEPTHREAD_CANCEL_DISABLE#defi...转载 2019-11-26 15:20:07 · 678 阅读 · 0 评论 -
C++枚举类型同名冲突问题
C++枚举类型同名冲突问题今天被C++枚举类型困扰了……之前写程序一直没有留意到这个问题,原来在C++中使用多个枚举类型时也是不能出现同名的。DAMN IT!个人认为这一点C++的实现确实是不如C#中那样的枚举类型先进……当然这里面是有一定的历史原因的,要兼容C嘛。但愿C++的下一个版本中会进行改进(已经有这个兆头了:-))一时还真没有发现什么好的解决方案。只能是在枚举类型的前面多加前缀了。...转载 2019-11-26 15:15:38 · 3093 阅读 · 1 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A{int...转载 2019-10-12 10:24:04 · 94 阅读 · 0 评论