VC++
bingcaihuang
这个作者很懒,什么都没留下…
展开
-
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include
<br /><br />这种情况本质上就是对windows.h头文件重复引用,解决的办法,如果能不引用此头文件当然就不要引用,如果非得引用,或者是引用其他头文件导致的间接引用windows.h,那么不要在stdafx.h文件里面引用,一般可以解决。<br />或者可使用如下代码:<br />所以使用如下代码:<br />#ifdef _WINDOWS_<br />#undef _WINDOWS_<br />#endif<br />或者#ifndef #define #endif<br />如果还不行,就换一原创 2010-06-28 11:20:00 · 3002 阅读 · 1 评论 -
关于初始化C++类成员
<br />在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:<br />第一种方法:CMYClass::CSomeClass(){ x=0; y=1;}第二种方法:CSomeClass::CSomeClass() : x(0), y(1){}本文将要探讨这两种方法的异同以及如何使用这两种方法。<br /> 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别。第二种语法被称为成员初始化列表,之所以要使用这种语法有两个原因转载 2010-06-01 09:58:00 · 428 阅读 · 0 评论 -
经典C/C++面试题
1.介绍一下STL,详细说明STL如何实现vector。 STL (标准模版库,Standard Template Library)它由容器算法迭代器组成。 STL有以下的一些优点: 可以方便容易地实现搜索数据或对数据排序等一系列的算法; 调试程序时更加安全和方便; 即使是人们用STL在UNIX平台下写的代码你也可以很容易地理解(因为STL是跨平台的)。 vector实质上就是一个动态数组,会根据数据的增加,动态的增加数组空间。 2.如果用VC开发原创 2010-06-03 14:31:00 · 3350 阅读 · 0 评论 -
C语言编译全过程剖析
<br /><br />内容摘要:C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。 一般情况下,我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(,一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文转载 2010-06-04 08:37:00 · 518 阅读 · 1 评论 -
使用VC2005编译真正的静态Qt程序
首先,你应该该知道什么叫静态引用编译、什么叫动态引用编译。我这里只是简单的提提,具体的可以google一下。动态引用编译,是指相关的库,以dll的形式引用库。动态编译的Exe程序尺寸比较小,因为相关的库都没有包含进来。当然,程序发布的时候,还要把相关的库也一并发布出去。静态引用编译,是指把相关的库也一并引入Exe文件。这是程序的尺寸就会很大,不过,程序发布就会变得简单很多。其次,你可能会注意到我标题上写了“真正”这两个字。为什么我要强调真正这两个字呢?因为使用VC编译的C或者C++程序,都需要相关的C ru转载 2010-06-08 09:18:00 · 693 阅读 · 0 评论 -
VC中创建DLL动态连接库的方法
1.创建一个Win32 Dynamic-link library工程dll,在向导中选择【A DLL that export some symbols】(实例性质)。默认的代码如下://dll.h #ifdef DLL_EXPORTS //DLIB_EXPORTS已经被定义,在【工程】->【设置】->【C/C++】页面的【分类】 //里选择【预处理器】(preprocessor)的预处理器定义中可以查看到DLIB_EXPORTS。#define DLL_API __原创 2010-06-09 15:47:00 · 722 阅读 · 0 评论 -
用Windows API 编写串口通讯程序
<br /><br />最近在做一个PC机上和ARM机串口通讯的程序。<br /> 实际上,我并没有在VC上编写过串口程序。记得大一下学期的课程实践上倒是在DOS环境下做个简单的串口通讯,可是就是因为太简单了,而且是DOS那种独占式的进程,所以现在要搬到VC和MFC界面应用程序环境中,难度还是有的,我一时没有头绪。<br /> 我首先当然想到用ActiveX控件了。曾听说过Microsoft曾做过一个ActiveX控件,用来简化在MFC中进行的串口编程。找了点资料,又去图书馆找了本书,试了两天,转载 2010-06-13 10:05:00 · 11374 阅读 · 5 评论 -
奇偶校验
<br />1、奇偶校验位于数据位之后,占1位,用于表示串口通信中的校验方式。该位有用户根据需要决定,有奇校验,偶校验,无校验三种。一般都采用无奇偶校验的方式<br />2、所谓奇校验,就是判断发送方的数据位中1的个数是否是奇数。选择奇校验时,首先将数据位的各位进行“异或”操作,然后将结果与1相“异或”,得到的结果就是奇校验位的值。<br />说白了,奇校验就是确保发送的数据位中1的个数为奇数,如果数据位中1的个数是偶数,那就给校验位赋值1,如果数据位中1的个数是奇数,那就给校验位赋值0.这样就确保发送的数原创 2010-06-13 10:13:00 · 7008 阅读 · 0 评论 -
VS2005 打开 内存 视图
<br /><br />先启动调试,然后输入Memory<br />关于更多的命令:<br /> 命令名别名完整名称打印?调试打印快速监视??调试.快速监视添加新项目AddProj文件.添加新项目别名Alias工具.别名“自动”窗口Autos调试.自动窗口“断点”窗口bl调试.断点切换断点bp调试.切换断点“调用堆栈”窗口CallStack调试.调用堆栈清除书签ClearBook编辑.清除书签关闭Close文件.关闭关闭所有文档CloseAll窗口.关闭所有文档全部清除cls编辑.全部清除“命令”模式cmd原创 2010-08-20 12:54:00 · 1349 阅读 · 0 评论 -
C++中处理string对象的字符
处理string对象的字符常用方法如下: isalnum():判断字符是否是字母或数字; isalpha():判断字符是否是字母; iscntrl():判断字符是否是控制字符; isdigit():判断字符是否是数字; isgraph():判断字符是否是可打印的非空格字符; ispunct():判断字符是否是标点符号; isspace():判断字符是否是空转载 2010-05-26 09:16:00 · 11064 阅读 · 0 评论 -
C++引用与指针
一、比较一引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。int m;int &n = m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。引用的规则:(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。(2)不能有NUL转载 2010-05-22 09:30:00 · 364 阅读 · 0 评论 -
VS2005+OPENGL
<br />1.选择编译环境,选择VS2005作为学习OPENGL的环境;<br />2.配置OPENGL:<br />项目 -->选择属性 C/C++-->preprocessor-->preprocessor definition添加GLUT_BUILDING_LIB,中间用分号隔开,<br />然后点击linker-->input--> additional dependencies添加glut32.lib,Opengl32.lib,Glu32.lib<br />3.安装glut工具包:<br />G原创 2010-06-30 08:50:00 · 1165 阅读 · 0 评论 -
虚拟键值表
http://blog.csdn.net/movayhust/archive/2009/08/12/4439676.aspx 转载。 虚拟键十六进制值十进制值相应键盘或鼠标键VK_LBUTTON011鼠标左键VK_RBUTTON022鼠标右键VK_CANCEL033Ctrl-Break键VK_MBUTTON044鼠标中键VK_BACK088Backspace键VK_TAB099Tab键VK_CLEAR0C12Clear键VK_RETURN0D13Enter键VK_SHIFT1016Shift键VK_CONT转载 2010-07-05 09:35:00 · 901 阅读 · 0 评论 -
迭代器
1、除了用下标访问容器(包括vector)的元素外,标准库还提供了一种方法:使用迭代器(iterator)。 2、迭代器是一种 检查容器内元素并遍历元素的 数据类型。(概念上来理解) 3、标准库为每一种 标准容器(包括vector) 都定义了一种 迭代器类型。 因为迭代器对所有的容器都适用,只有少数容器支持下标操作,所以现在倾向于使用 迭代器 而不是 下标操作 来访问元素,即使对支持下标操转载 2010-05-10 17:37:00 · 593 阅读 · 0 评论 -
VS2005快捷键大全
<br /><br />VS2005快捷键大全<br />快捷键功能<br />CTRL + SHIFT + B生成解决方案<br />CTRL + F7 生成编译<br />CTRL + O 打开文件<br />CTRL + SHIFT + O打开项目<br />CTRL + SHIFT + C显示类视图窗口<br />F4 显示属性窗口<br />SHIFT + F4显示项目属性窗口<br />CTRL + SHIFT + E显示资源视图<br />F12 转到定义<br />CTRL + F12转转载 2010-07-07 08:29:00 · 580 阅读 · 0 评论 -
Visual Assist X设置
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />原创 2010-07-09 08:51:00 · 866 阅读 · 0 评论 -
静态链接库(Lib)与动态链接库(DLL)的区别
一直不知道这两者的区别,只知道windows系统经常因缺少dll垮了……静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码原创 2010-05-18 19:17:00 · 430 阅读 · 0 评论 -
标准ASCII表
<br /><br />ASCII值<br />控制字符<br />ASCII值<br />控制字符<br />ASCII值<br />控制字符<br />ASCII值<br />控制字符<br />0<br />NUT<br />32<br />(space)<br />64<br />@<br />96<br />、<br />1<br />SOH<br />33<br />!<br />65<br />A<br />97<br />a<br />2<br />STX<br />34<br />”<br转载 2010-07-15 15:02:00 · 693 阅读 · 0 评论 -
extern "C"
时常在cpp的代码之中看到这样的代码:#ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } #endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern "C"{和}处理其中的代码。 要明白为何使用extern "C",还得从cpp中对函数的重载处理转载 2010-07-14 14:41:00 · 820 阅读 · 0 评论 -
VC++编译环境详解
<br /><br />大家可能一直在用VC开发软件,但是对于这个编译器却未必很了解。原因是多方面的。大多数情况下,我们只停留在“使用”它,而不会想去“了解”它。因为它只是一个工具,我们宁可把更多的精力放在C++语言和软件设计上。我们习惯于这样一种“模式”:建立一个项目,然后写代码,然后编译,反反复复调试。但是,所谓:“公欲善其事,必先利其器”。如果我们精于VC开发环境,我们是不是能够做得更加游刃有余呢?<br /> 闲话少说。我们先来看一下VC的处理流程,大致分为两步:编译和连接。源文件通过编译生成了.转载 2010-09-01 13:51:00 · 1485 阅读 · 0 评论