随笔分类 -  编程语言 / C++

摘要:typedef struct t_xtime { int year; int month; int day; int hour; int minute; int second; } _xtime ;#define xMINUTE (60 ) //1分的秒数#define xHOUR (60*xMINUTE) //1小时的秒数#define xDAY (24*xHOUR ) //1天的秒数#define xYEAR (365*xDAY ) //1年的秒数可以通过在线转换工具,对程序结果进行验证:http://t... 阅读全文
posted @ 2013-12-05 09:24 bigbigtree 阅读(10865) 评论(0) 推荐(1)
摘要:当在函数中申请占用空间很大的数组、结构体时,会产生该问题。由于局部变量的申请空间存放于栈中,windows里默认栈内存是1M所以当申请空间大于1M时就会出现溢出错误通过debug就会进入以下文件chkask.asmchkstk.asm - C stack checking routine解决方法:扩大栈空间的大小VS设置项目属性:项目->属性->链接器->系统->堆栈保留大小注:这里填的是字节数如果你想把他扩大为2M的话,1024*1024*2 = 2097152 阅读全文
posted @ 2013-12-02 09:40 bigbigtree 阅读(2738) 评论(0) 推荐(1)
摘要:error C2504:头文件包含不全今天碰到了很烦的问题,继承一个类之后,感觉头文件都包含了,可还是出现父类未定义的问题,最后发现,子类的子类在实现时,需要在cpp文件中包含所有他的父类的定义。因为每个cpp文件是单独编译的,需要知道其所有父类来确定这个类的大小和实现的细节。实例代码如下://a.hclass A{public: virtual void fun()=0;};//b.hclass B : public A{public: virtual void fun();};//b.cpp#include "a.h"void B::fun(){ std::cout&l 阅读全文
posted @ 2013-08-27 15:58 bigbigtree 阅读(1266) 评论(0) 推荐(0)
摘要:转自http://www.cnblogs.com/yishuiliunian/archive/2011/03/18/1988244.html上次腾讯面试,问我int和long分别几个字节,结果被鄙视了。事过N天,鼓起勇气来好好查了一下,发现学问还是蛮大的。int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。C、C++标准中只规定了某种类型的最小字节数(防止溢出)64位指的是cpu通用寄存器的数据宽度是64位的。找到一个图数据类型名称字节数别名取值范围int*signed 阅读全文
posted @ 2013-08-22 15:22 bigbigtree 阅读(1368) 评论(0) 推荐(0)
摘要:pro文件添加LIBS+=-lAdvapi32-lgdi32-luser32-lshell32若是在VS环境:需要加入库文件ws2_32.lib可以在stdafx.h中增加这一句:#pragma comment(lib, "ws2_32.lib") 阅读全文
posted @ 2012-12-05 23:06 bigbigtree 阅读(621) 评论(0) 推荐(0)
摘要:参考:http://www.360doc.com/content/11/0330/21/1317564_105977930.shtmlhttp://hi.baidu.com/bitcore/blog/item/77c521c65f4512d7d10060eb.htmlhttp://apps.hi.baidu.com/share/detail/22734757http://my.oschina.net/alphajay/blog/3870一、C语言可执行代码结构名称内容代码段可执行代码、字符串常量数据段已初始化全局变量、已初始化全局静态变量、局部静态变量、常量数据BSS段未初始化全局变量,未初始 阅读全文
posted @ 2012-11-23 11:50 bigbigtree 阅读(5216) 评论(3) 推荐(2)
摘要:C++虚函数表解析(转)--(虚函数在内存中的结构)C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上面为大家 一个清晰的剖析。当然,相同的文章在网上也出现过一些了,但我总感觉 阅读全文
posted @ 2012-11-23 10:44 bigbigtree 阅读(304) 评论(0) 推荐(0)
摘要:(敬告:当您的浏览器以非默认字体浏览本文时,段落格式可能会出现偏差)这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在<sstream>、<fstream>上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。一、综述cout是STL库提供的一个iostream实例,拥有ios_base基类的全部函 阅读全文
posted @ 2012-10-04 10:58 bigbigtree 阅读(352) 评论(0) 推荐(0)
摘要:代码1const int size = 9;char c[size];1.VS2005 编译为 C 代码(/TC)编译不通过错误1error C2057: expected constant expression错误2error C2466: cannot allocate an array of constant size 0错误3error C2133: 'c' : unknown size2.VS2005 编译为 C++ 代码(/TP)编译通过3.Cygwin gcc/g++编译通过============================================= 阅读全文
posted @ 2012-10-01 17:54 bigbigtree 阅读(690) 评论(0) 推荐(0)
摘要:PS: 今天的又被师兄鄙视英语水平了。。。要发奋!!!这篇文字要慢慢看,文章逻辑不太好。介绍大多程序员在学C++前都学过C,并且习惯于C风格(类型)转换。当写C++(程序)时,有时候我们在使用static_cast<>和reinterpret_cast<>时可能会有点模糊。在本文中,我将说明static_cast<>实际上做了什么,并且指出一些将会导致错误的情况。泛型(Generic Types)01.floatf = 12.3;02.03.float* pf = &f;04.// static cast<>05.06.// 成功编译, 阅读全文
posted @ 2012-08-27 14:41 bigbigtree 阅读(239) 评论(0) 推荐(0)
摘要:接触QT也将近一个月的时间了,现在对于QT还是模模糊糊,绘图机制、消息机制都是一知半解。之所以这样,是在学习的过程中不脚踏实地,整天飘在半空中。需要什么功能,找到源码,一知半解,复制粘贴完成任务以后,就扔到一边。切忌!~!!! 阅读全文
posted @ 2012-08-24 10:56 bigbigtree 阅读(264) 评论(0) 推荐(0)
摘要:Tabcontrol m_tab.InsertItem(0,"常规"); m_tab.InsertItem(1,"源"); m_tab.InsertItem(2,"范围");m_tab.SetCurSel(0);//使用子窗口填充Tabcontrolm_ImagePropGeneral为子窗口实例m_ImagePropGeneral.Create(IDD_DLG_IMGPROP1,GetDlgItem(IDC_IMGPROP_TAB));CRect rect; m_tab.GetClientRect(&rect); rect. 阅读全文
posted @ 2012-07-04 14:54 bigbigtree 阅读(310) 评论(0) 推荐(0)
摘要:本文背景:本人在编程时需要匹配字符串,由此想到了如果文件是各种字符编码的话,匹配结果有可能不正确,那么,如何判断不同的字符集?如何在不同字符集之间做转换?对于UNICODE编码逐渐通用的情况下,我们软件人员如何从容应对? 本文首先对常用字符集进行总结,然后在字符集的显示及转换上以实例介绍,最后总结了编程中遇到的编码问题。本文目的:对字符集编码做详细介绍,关键配以实例讲解,降低问题的复杂度。本文内容:1.常用字符集分类1.1简介·ASCII及其扩展字符集作用:表语英语及西欧语言。位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。范围:ASCII从 阅读全文
posted @ 2012-06-27 15:45 bigbigtree 阅读(1088) 评论(0) 推荐(0)
摘要:AlphaBlend中目标DC的矩形范围设置错误,应为0,0,nWidth,nHeight;另外参考微软MSDN源码:Alpha Blending a BitmapThis topic has not yet been ratedRate this topicThe following code sample divides a window into three horizontal areas. Then it draws an alpha-blended bitmap in each of the window areas as follows:In the top area, cons 阅读全文
posted @ 2012-02-13 15:53 bigbigtree 阅读(516) 评论(0) 推荐(1)
摘要:在GDI有一个特点: 就是所有的图片绘制,都是通过DC来完成的。DC之间是可以相互传递的。两个DC之中的图形 通过DC--->DC 来相互传递信息。 无论 位图--->屏幕 位图--->位图 屏幕---->位图 屏幕----->屏幕他们所使用的都是DC-->DC之间的传递。其关键点便是:如何获得各自的DC 对于屏幕: 直接使用GetDC() ReleaseDC() 便可 ::GetDC() 返回的是CDC* 对于图片: CBitmap 不支持DC CImage 获得DC[cpp]view plaincopyprint?CImageimg;img.Load(i 阅读全文
posted @ 2012-02-09 09:37 bigbigtree 阅读(2667) 评论(0) 推荐(2)
摘要:分辨率我们常说的屏幕分辨率为640×480,刷新频率为70Hz,意思是说每行要扫描640个象素,一共有480行,每秒重复扫描屏幕70次。调色板 有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R、G、B三个分量表示。因为每个分量有256个级别,要用8位(bit),即一个字节(by... 阅读全文
posted @ 2012-02-09 09:07 bigbigtree 阅读(11694) 评论(1) 推荐(0)
摘要:GDI基本概念及思想编写代码的一般步骤:先用CreateDC创建(或GetDC获取)device content(DC),然后用GetObject获取(或使用创建object的函数创建)需要的object,并用SelectObject将获取的object选入device content(DC),再使用object进行相应的画图操作,最后用SelectObject将原来的object重新选入DC,并delete或release删除或释放前面创建或获取的DC。1.关于device context(DC)设备内容:用来显示位图的地方.四种设备内容:显示器设备内容、打印机设备内容、内存设备内容、Inf 阅读全文
posted @ 2012-02-09 08:57 bigbigtree 阅读(1286) 评论(0) 推荐(1)
摘要:利用VC实现图像的特殊显示效果经常看电视的朋友们不知注意到没有,最近的电视连续剧在每集片头或片尾部分都有显示一些特殊效果的图像,比如前一阵子中央一套放的《长征》、目前中央八套正在播放的《康熙王朝》,这些特效称为"图像的浮雕效果"和"图像的雕刻效果",经过这些特效处理后的图像增强了观众们的视觉效果,它们看上去仿佛是使用3D技术作的,这也是为什么这种技术那么流行的原因吧。其实,我们完全可以用一些简单的数字图像处理算法来实现这些看似复杂高深的显示效果。我们手头上的一些关于利用VC开发数字图像资料大都是讲解如何控制图像的每一行或每一列像素的显示时间或顺序来实现一 阅读全文
posted @ 2011-12-17 15:36 bigbigtree 阅读(2290) 评论(0) 推荐(0)
摘要:DYNAMIC_DOWNCAST(class, pointer ):如果pointer指针所指向的对象是class类型的,就返回这个指针。否则返回NULLpwnd 你获取到的指针class 你的类class A;例如 你获取到一个指针 XXX *pointer; 你想判断它是不是指向某个类 例如 A 这个类A* p= DYNAMIC_DOWNCAST(A, pointer );如果pointer是指向A这个类则返回此指针,否则返回空CRuntimeClass和IsKindOf的关系CRuntimeClass在MFC中的作用很重要,因为MFC利用它来进行类的动态确定,即是通过类变量来判定该变量是 阅读全文
posted @ 2011-12-16 10:03 bigbigtree 阅读(405) 评论(0) 推荐(0)
摘要:1、 声明外部变量 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是 互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。下面举一个简单的例子。创建一个工程,里面含有A.cpp和B.cpp两个简单的C++源文件: //A.cpp int i; void main() { } //B.cpp int i; 这两个文件极为简单,在A.cpp中我们定义了一个全局变量i,在B中我们也定义了一个全局变量i。 我们对A和B分别编译,都可以正常通过编译,但是进行链接的时候,却出现了错误,错误提示如下: Linking... B.obj : e... 阅读全文
posted @ 2011-12-02 20:13 bigbigtree 阅读(2879) 评论(0) 推荐(0)