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