
C/C++
bytxl
归零。
得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。
不怕死,不找死。
展开
-
在共享DLL中使用MFC 和在静态库中使用MFC
使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC 第一种顾名思义。第二种指的是打包时一些MFC的DLL的内容没有被包含在EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。第三种是将DLL中的相关代码写进EXE文件中,文件较大,但是可以在没有相关DLL的机器上转载 2011-07-02 14:48:41 · 815 阅读 · 0 评论 -
“应用程序配置不正确,程序无法启动”详细举例
参考资料: 应用程序配置不正确,程序无法启动 的解决方法资料收集内容我就不copy了,大家可以自己去看,总来说产生这个问题的原因可以归结如下:vc2005/vc2008采用了新的程序部署技术(manifest清单文件),manifest清单文件实际上类似于我们常用的makefile文件,它定义了程序运行的依赖关系(程序运行所需要的dll库的名称、版本等)。程序运行,首先根据manifest清单文件原创 2011-07-02 17:10:53 · 1307 阅读 · 0 评论 -
TCP/IP SOCKET HTTP
网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。 http协议 对应于应用层 t转载 2011-07-16 16:03:09 · 1164 阅读 · 0 评论 -
C#调用C++DLL时的编码转换-编码、字符集
最近项目,需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是Unicode,而调用的DLL规定只处理UTF8编码格式的字符串,DLL中的输入参数类型char*被我Marshal成byte[],输出参数类型char**被我Marshal成了string(C++和C#之转载 2011-07-20 20:51:15 · 5628 阅读 · 0 评论 -
freetype文字颜色
已经很久没来这里记录东西了,在写了地下的lod后,dx的学习也是断断续续的,那之后给地形加上了贴图,弄了段时间的shader,之后地形就放下了,之后开始弄了水的渲染。在弄水的渲染也是碰到了很多的问题但是都太懒了都没记录下什么,等有时间一定要补上。这段时间在弄freetype。主要转载 2011-10-18 11:28:31 · 4921 阅读 · 0 评论 -
freetype显示仿宋_GB2312 的探索历程
CuteDeviceOpenGL 原先采用的文字绘制方法是借助CDC作出文字的位图,然后用 OpenGL Textuer 贴上去。OpenGL 干活巨快,CDC处理位图却慢得要死。最终不得不放弃这种方法。然后,上 qq群 1490198(OpenGL专业群)询问,有牛人大转载 2011-10-17 21:49:40 · 3173 阅读 · 0 评论 -
C++ 中重载 + 操作符的正确方法
作者:Danny Kalev编译:MTT 工作室原文出处:Overloading Operator + the Right Way摘要:本文概要性地介绍如何选择正确的策略来为用户定义类型重载 + 操作符。 用户定义的类型,如:字符串,日期,复数,联合体以及文件常常重载二元 + 操作符以实现对象的连接,附加或合并机制。但是要正确实现 + 操作转载 2012-04-30 19:23:59 · 719 阅读 · 0 评论 -
do…while(0)的妙用
一、开始循环在程序中是不可少的,要么for, while...do,do...while, 但它都有自己的循环条件,在一些Linux的库中,MFC中常常会有do...while(0),或者do...while(FALSE)的宏,有什么用呢?不是用来循环,是用来提高代码的健壮性。闲来无事,总结一下。 二、妙用总结1.使程序结构简单 1: //------------------转载 2012-06-20 08:57:18 · 938 阅读 · 0 评论 -
setjmp()/longjmp()的使用方法和场合
setjmp和longjmp.为了让你实现复杂的流控制,程序在系统里面运行完全依靠内存(代码段,全局段,堆存储器,栈存储器)和寄存器的内容(栈指针,基地址,计数器),setjmp保存当前的寄存器里面的内容,longjmp是恢复这些内容.longjmp返回setjmp程序当前的状态.#include int setjmp(jmp_buf env);保存当前寄存器的状态到env这个结构转载 2012-07-05 19:51:22 · 1037 阅读 · 0 评论 -
memcmp和strcmp函数
一、memcmp含义Compare characters in two buffers.int memcmp( const void* buf1, const void* buf2, size_t count );inline int wmemcmp ( const wchar_t* buf1, const wchar_t* buf2, size_t count转载 2012-07-11 14:01:16 · 1010 阅读 · 0 评论 -
strtok两个连续分隔符当作一个提取的问题,字符分割线程安全性
1.strtok是c的一个字符串分割函数,由于使用了一个全局static变量,所以它是线程不安全的. 2.当风格"a,,b,c"这样的两个分隔符挨着的字符串时候,会得到a、b、c三个字符,而不是a、空字符、b、c 3.解决办法就是将连续的分割替换成比如:Replace(",,",",|,"),然后再使用strtok字符分割函数。那么会得到: a、|、b、c,然后判定下字符转载 2012-08-14 09:30:18 · 4837 阅读 · 0 评论 -
linux c语言字符串函数replace,indexOf,substring等的实现
http://blog.youkuaiyun.com/wangguanguo/article/details/6051130c语言没有像java那么丰富的字符串操作函数,很多有用的函数得自己写,搞了一天,写了几个常用函数,留着以后有用。[cpp]#include #include /*将strSrc字符串中第一次出现的strDest字符串替换成strReplace*转载 2012-08-15 15:23:15 · 1454 阅读 · 0 评论 -
C++内存管理
http://blog.youkuaiyun.com/zhanghefu/article/details/5003383内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,转载 2012-08-20 13:53:59 · 1048 阅读 · 0 评论 -
C++ 异常处理 入门
http://blog.youkuaiyun.com/tuwen/article/details/2295853异常:程序执行期间,可检测到的不正常情况。例如:0作除数;数组下标越界;打开不存在的文件;远程机器连接超时;malloc失败等等。程序的两种状态:正常状态和异常状态,发生不正常情况后,进入异常状态,从当前函数开始,按调用链的相反次序,查找处理该异常的程序片断。1.thro转载 2012-08-20 13:54:46 · 837 阅读 · 0 评论 -
snprintf函数和sprintf函数
今天写代码,做字符串处理,写了以下语句:snprintf(loginTime,sizeof(loginTime),"%s%s",loginTime,blankSpace);然后loginTime中的字符串老不对,记得以前用sprintf的时候,类似语句是可以的。 请教了高人,答曰:很少有函数支持源地址和目标地址相同的拷贝,比如memcpy也不行。原创 2012-08-31 17:59:12 · 1098 阅读 · 0 评论 -
Json_c++ json api 的个人总结
http://hi.baidu.com/it_ibear/item/936f9644f0569f9f833ae12djson_object的格式:(注意:一个json对象内可以包含多个json对象){'latitude':116.40091896057129,'longitude':39.931129903495886}json_object数组的格式:"[{'latitu转载 2012-10-17 10:28:33 · 1941 阅读 · 1 评论 -
指针以及内存分配
http://blog.youkuaiyun.com/bizhu12/article/details/65322351. 指针很灵活,这使得指针很难管理,在定义指针时,将在栈中开辟一块内存存放指针的地址(栈内的内存由系统分配和释放),指针的地址内存只是存放指针的地址,不存放指针指向的数据,值得注意的是,定义指针时指针会随机指向一块内存,如int *p;p会指向一块不为空的内存,相当危险,例如执行判断转载 2012-11-08 15:47:42 · 490 阅读 · 0 评论 -
memcpy、strcpy、snprintf的区别
http://hi.baidu.com/wlibo666/item/7cfdb717454099d4be9042f5这些函数的区别在于 实现功能 以及 操作对象 不同。strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能,安全隐患:内存溢出。strncpy则是安全的。snprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是转载 2012-12-03 10:18:11 · 796 阅读 · 0 评论 -
c/c++不定参数函数
http://plutoblog.iteye.com/blog/1150671不定参数函数stdarg.h是C语言中C标准函数库的头文件,stdarg是由stdandard(标准) arguments(参数)简化而来,主要目的为让函数能够接收不定量参数。 C++的cstdarg头文件中也提供这样的机能;虽然与C的头文件是兼容的,但是也有冲突存在。不定参数函数(Variadic func转载 2013-01-06 16:00:20 · 1833 阅读 · 0 评论 -
setlocale()用法笔记
http://www.cnblogs.com/hnrainll/archive/2011/05/07/2039700.htmlC 和 C++ 的标准库分别有自己的 locale 操作方法,C 标准库的 locale 设定函数是 setlocale(),而 C++ 标准库有 locale 类和流对象的 imbue() 方法。这篇是我自己的 setlocale() 使用总结。Linux的g转载 2013-01-07 11:39:58 · 1418 阅读 · 0 评论 -
enum 在c中的使用
http://blog.youkuaiyun.com/logogcn/article/details/7879398如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是转载 2013-03-08 16:10:28 · 752 阅读 · 0 评论 -
string中c_str()、data()、copy(p,n)函数的用法
http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html标准库的string类提供了3个成员函数来从一个string得到c类型的字符数组:c_str()、data()、copy(p,n)。1. c_str():生成一个const char*指针,指向以空字符终止的数组。注:①这个数组的数据是临时的,当有一个改变这转载 2013-03-04 10:36:21 · 470 阅读 · 0 评论 -
cUnit的简单例子
http://blog.youkuaiyun.com/jiantiantian/article/details/3547390test.c /* * Simple example of a CUnit unit test. * * This program (crudely) demonstrates a very simple "black box" * test of t转载 2013-03-15 13:35:54 · 966 阅读 · 0 评论 -
CUnit介绍
http://blog.youkuaiyun.com/jiantiantian/article/details/3546887一:概述二:详细介绍1:测试函数的书写2:CUnit提供的断言3:注册所要进行的测试4:运行测试和测试报告的生成5:错误处理三:注意 一:概述CUnit是一个c语言的单元测试框架,它是以静态链接库的形式,连接到用户代码中的,主要的功能就是转载 2013-03-15 13:35:10 · 960 阅读 · 0 评论 -
C语言注释风格(函数、功能、输入、输出、返回)
http://blog.youkuaiyun.com/zhuichao001/article/details/7889610C语言编程规范-注释 规则:1:一般情况下,源程序有效注释量必须在20%以上。说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。2:说明性文件(如头文件.h文件、.inc文件、.def文件、编译说转载 2013-03-26 14:50:31 · 1096 阅读 · 0 评论 -
深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p
http://www.cnblogs.com/rushuizhijing/archive/2011/08/26/2154737.html深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p一、可能的组合:(1)const char*p转载 2013-04-09 09:48:41 · 565 阅读 · 0 评论 -
__FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
http://hulefei29.iteye.com/blog/1319300先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件C代码 #ifndef CLOBAL_H #define GLOBAL_H #inc转载 2013-04-24 10:49:56 · 816 阅读 · 0 评论 -
va_list 详解
VA_LIST 是在C语言中解决变参问题的一组宏。VA_LIST的成员1) va_list型变量:#ifdef _M_ALPHAtypedef struct { char *a0; /* pointer to first homed integer argument */ int offset; /* byte offset转载 2012-05-29 11:43:50 · 654 阅读 · 0 评论 -
c++中 string与string.h 的作用、区别和C++头文件的现状
示例1:#include int main() { string buf = "abcsd d"; printf("looking for abc from abcsd d %d\n", strcmp( buf, "abc" ) ); return 0;} 不能正确执行,提示说是string类型没有定义转载 2011-02-28 17:36:00 · 994 阅读 · 0 评论 -
C++内联函数(Inline)介绍
介绍内联函数之前,有必要介绍一下预处理宏。宏内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如#define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种原创 2011-04-19 19:22:00 · 634 阅读 · 0 评论 -
setsockopt 设置socket 详细用法
http://www.cppblog.com/killsound/archive/2009/01/16/72138.html1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bRe转载 2011-05-11 16:02:00 · 800 阅读 · 0 评论 -
C++构造函数中的初始化
很多的人对中构造函数的初始化有很多的困惑,对冒号后初始化不是太明白,总搞不清楚它们之间的区别,我想把我对这个问题的理解和看法和大家讨论讨论。 在程序中定义变量并初始化的机制 有两种形式,一个是我们传统的初始化的形式,即赋值运算符赋值,还有一种是括号赋值,如: int a=10; char b='r';//赋值运算符赋值 int a(10转载 2012-01-14 10:07:02 · 892 阅读 · 0 评论 -
C/C++语法知识:typedef struct 用法详解
第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什转载 2012-01-16 15:04:29 · 762 阅读 · 0 评论 -
C/C++ 的全局变量初始化与不初始化的区别
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的,叫弱符号。连接器在连接目标文件转载 2011-09-23 11:03:49 · 2965 阅读 · 1 评论 -
C89和C99标准比较
1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象转载 2013-05-06 22:20:53 · 700 阅读 · 0 评论 -
vector,list,deque区别
http://blog.youkuaiyun.com/renkaihao/article/details/6803866vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大转载 2013-07-21 11:08:26 · 698 阅读 · 0 评论 -
STL中的排序
http://blog.youkuaiyun.com/luoya263547560/article/details/63870760 前言: STL,为什么你必须掌握对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来。幸运的是这些理论 都已经比较成熟,算法也基本固定下来,不需要你再去花费心思去考虑其算法原理,也不用再去验证转载 2013-07-21 16:36:58 · 617 阅读 · 0 评论 -
STL排序方法
http://www.cnitblog.com/cockerel/archive/2006/06/14/12244.html//适合读者:STL初学者//#include//快速排序sort() (平均O(NlogN) //稳定排序stable_sort() (最好O(NlogN),最坏O(N(logN)^2) 用法与sort()相同//堆排序s ort_heap() (O转载 2013-07-21 16:35:14 · 728 阅读 · 0 评论 -
vector 操作
http://blog.youkuaiyun.com/yousheng324/article/details/7364840C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vect转载 2013-07-24 12:57:49 · 575 阅读 · 0 评论 -
在C语言中利用PCRE实现正则表达式
http://dev.jizhiinfo.net/?post=491. PCRE简介PCRE(Perl Compatible RegularExpressions即:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之中的正则表达式库小得多。PCRE十分易用,同时功能也很强大,转载 2013-07-26 09:57:54 · 1289 阅读 · 0 评论