C++
德德
这个作者很懒,什么都没留下…
展开
-
原来do while(0) 可以这样用
转的do...while(0)的妙用在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while转载 2015-06-03 14:01:22 · 319 阅读 · 0 评论 -
运行结果为啥,为啥
#include "stdio.h"#include "conio.h"#include #include using namespace std;class cmp{public: bool operator()(const char* s1, const char* s2) { return strcmp(s原创 2016-02-03 10:02:35 · 481 阅读 · 0 评论 -
lambda 表达式 c++
本文章为转载文章,原地址不晓得了,然后 个人觉得c++中lambda表达式和函数指针的作用是一样的,虽然优化了代码方式,可能是不适应的原因吧,总感觉看起来比较别扭。。。。很多高级语言里引入了lambda表达式的概念,即匿名函数。以往C++需要传入一个函数的时候,必须事先进行声明,视情况可以声明为一个普通函数然后传入函数指针,或者声明一个funtor,然后传入一个对象。但这转载 2015-07-22 09:22:22 · 246 阅读 · 0 评论 -
c++中try catch的用法
在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在任何自己得到不想要的结果的时候进行中断,比如在进行数据库事务操作的时候,如果某一个语句返回SQL_ERROR则直接抛出异常,在catch块中进行事务回滚)[html] view plaincopy#include iostream> #include exception>转载 2015-06-11 15:01:10 · 438 阅读 · 0 评论 -
try{} catch(…){}
以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try{BYTE* pch ;pch = ( BYTE* )00001234 ; //给予一个非法地址*pch = 6 ; //对非法地址赋值,会造成Access Violation 异常}catch(...){AfxMe转载 2015-06-11 15:00:18 · 292 阅读 · 0 评论 -
DLL 相关用法
__declspec(dllexport)声明一个导出函数,是说这个函数要从本DLL导出。我要给别人用。一般用于dll中省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类__declspec(dllimport)声明一个导入函数,是说这个函数是从别转载 2015-06-07 21:00:00 · 289 阅读 · 0 评论 -
C++实现反射机制(一)
NET下的很多技术都是基于反射机制来实现的,反射让.NET平台下的语言变得得心应手。最简单的,比如枚举类型,我们我可以很容易的获得一个枚举变量的数值以及其名称字符串。可是,在C++中,枚举变量本质上和一个整形变量没有区别,我们很难获取一个枚举变量的名称字符串。其实在C++中,我们可以通过宏来实现类似反射的机制。接下来,我想总结一下如何在C++中实现一个类似于C#枚举类型的方转载 2015-06-07 20:33:02 · 1163 阅读 · 0 评论 -
原来宏定义可以这么玩
最近做一个公司项目,用到了一些宏定义的东东,发现了一个神奇的用法,故写日志纪念一下。首先你需要知道C++宏定义的基本用法://拼接x和y ###define Conn(x,y) x##y//加上单引号 #@#define ToChar(x) #@x//加上双引号 ##define ToString(x) #x不解释,网上一大堆。有了以上三个宏定义,我现在想拼接两个原创 2015-06-04 16:06:13 · 676 阅读 · 0 评论 -
C++ 进程锁 互斥锁
基本的互斥锁用法,不解释直接上代码#include #include int main(){ HANDLE mutex; mutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,"memtest"); if(mutex == NULL) { mutex = CreateMutex(NULL,FALSE,"mem原创 2015-06-04 17:08:29 · 4747 阅读 · 1 评论 -
DLL 打开对话框 注意点
要静态使用MFC,否则DoModal()中的AfxGetResourceHandle()会去取调用该dll的exe中的资源,而不是使用dll中的对话框模板。原创 2016-11-17 09:33:51 · 656 阅读 · 0 评论