博客地址:http://home.cnblogs.com/u/zengjianrong/

随笔分类 -  C/C++

about C/C++ 基础
摘要:1. 类成员函数转成std::function及lambda class MyClass{ pub: int Func(int a) {}; }; int main(void) { MyClass my_class; std::function<int(int a)> func_ = std::bi 阅读全文
posted @ 2021-02-02 21:36 black_man 阅读(262) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2021-01-04 15:14 black_man 阅读(0) 评论(0) 推荐(0) 编辑
摘要:header #include <iostream> #include <memory> // interface (widget.h) class widget { class impl; std::unique_ptr<impl> pImpl; public: void draw() const 阅读全文
posted @ 2020-12-28 19:58 black_man 阅读(154) 评论(0) 推荐(0) 编辑
摘要:在main函数结束时,或者收到signal,在signal处理函数中调用exit退出时,希望在退出前做一些资源释放的工作,则可以使用atexit注册回调; 需要注意的是,全局的资源系统会主动释放(调用析构函数),但有些线程如果在while循环中无法退出,则系统不会主动释放; 此时atexit就可以发 阅读全文
posted @ 2020-04-06 11:26 black_man 阅读(242) 评论(0) 推荐(0) 编辑
摘要:参考链接:https://blog.csdn.net/youfuchen/article/details/23179799 https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html 阅读全文
posted @ 2019-11-29 15:30 black_man 阅读(293) 评论(0) 推荐(0) 编辑
摘要:Hash冲突的解决--暴雪的Hash算法https://usench.iteye.com/blog/2199399https://www.bbsmax.com/A/kPzOO7a8zx/ 阅读全文
posted @ 2019-02-15 12:09 black_man 阅读(144) 评论(0) 推荐(0) 编辑
摘要:根据实际示波器的波形画的时序图,时序图不好画,小小一幅图,画了两个小时,分享之: 阅读全文
posted @ 2015-04-10 14:47 black_man 阅读(5473) 评论(1) 推荐(1) 编辑
摘要:博客地址:http://home.cnblogs.com/u/zengjianrong/ 在内核处理此流程,反而更加简单些,代码如下:#include #include #include "linux/ctype.h"#define MAC_BCAST_ADDR (unsigne... 阅读全文
posted @ 2014-12-25 20:05 black_man 阅读(510) 评论(0) 推荐(0) 编辑
摘要:博客地址:http://home.cnblogs.com/u/zengjianrong/ 由于某种需求,需要获取某个ip的mac地址,在应用层实现例子如下代码。 流程:1. 先遍历arp表,若存在对应mac地址,则取出并结束。否则继续。 2. 构造arp包,发arp request,... 阅读全文
posted @ 2014-12-25 19:48 black_man 阅读(761) 评论(0) 推荐(0) 编辑
摘要:博客地址:http://www.cnblogs.com/zengjianrong/p/4185072.html 在代码调试过程中,经常需要打印调试,下面是一个使用模版,可以通过“DEBUGGING”在代码里面(或者编译时添加“-D”选项)关闭(或打开)打印选项,亦可以通过改变“DEBUGGIN... 阅读全文
posted @ 2014-12-25 17:02 black_man 阅读(195) 评论(0) 推荐(0) 编辑
摘要:博客地址:http://www.cnblogs.com/zengjianrong/p/4184854.html 为了方便编译零碎的测试代码,在代码的存放目录编辑了一个Makefile,添加新代码文件后,通过make dep&&make all(如果只是修改代码且修改内容不涉及头文件,则只需ma... 阅读全文
posted @ 2014-12-25 15:55 black_man 阅读(204) 评论(0) 推荐(0) 编辑
摘要:c#里的延时方法:1.用sleep()使线程休眠。直接在需要延时的地方插入System.Threading.Thread.Sleep(1000);即可。这种方式最方便,但是延时过程中会停止其他响应,如果用在主线程中会造成程序的假死。如果有异步操作的话也会暂停,例如用webBrowser加载网页,本来希望延时一段时间等待网页加载完毕,但用sleep的话同时会暂停网页的加载过程。2.读取当前时间判断。可以做成一个延时函数进行调用,记录开始时间然后判断当前时间差,达到延时时间后再执行操作。一个简单的例子如下:privatevoid delayTime(double secend){DateTime 阅读全文
posted @ 2013-04-23 14:19 black_man 阅读(606) 评论(0) 推荐(0) 编辑
摘要:很多人在使用scanf的时候都不会去检查它的返回值, 包括我在这之前也没有去注意它, 如果你方便去翻翻c语言的教科书, 估计也很难找到有检查scanf的例子或代码段, 至少我还没有见过, 当然, 书上的代码毕竟只是一个练习, 和真正用于产品级别的代码有很大的差别。一个偶然的机会, 在独立编写一个10010客户服务端系统时,让我注意到检查scanf返回值的重要性, 写下来和大家分享一下:)下面是一个最简单不过的scanf用法,但却有隐患:int n;scanf( "%d", &n);...scanf要求取一个整数,但如果输入的是一个字母,或其它不是数字的字符时,情况会 阅读全文
posted @ 2013-04-20 16:20 black_man 阅读(525) 评论(0) 推荐(0) 编辑
摘要:#include <windows.h>#include <mmsystem.h>#pragma comment(lib, "WINMM.LIB")void main(void){ PlaySoundA("E:\\1.wav", NULL, SND_ASYNC | SND_LOOP); while(1) { Sleep(1000 * 1000); }} 阅读全文
posted @ 2013-04-17 21:59 black_man 阅读(297) 评论(0) 推荐(0) 编辑