摘要:在使用VC 2005 的开发者会遇到这样的问题,在使用std命名空间库函数的时候,往往会出现类似于下面的警告: warning C4996: strcpy was declared deprecated 出现这样的警告,是因为VC2005中认为CRT中的一组函数如果使用不当,可能会产生诸如内存泄露、缓冲区溢出、非法访问等安全问题。这些函数如:strcpy、strcat等。 对于这些问题,VC...
阅读全文
摘要:http://baike.baidu.com/view/109447.htmmain(){ union exx{ int a,b; struct { int c,d; }lpp; }e={10};//e.b=e.a+20;//由于只保存一个值,所以e.b=30;e.lpp.c=e.a+e.b;//这里e.a和e.b都为30 e.lpp.c为60e.lpp.d=e.a*e.b;//e.lpp.d 为...
阅读全文
摘要:一、如何处理所有的控制台消息。 第一步,首先要安装一个事件钩子,也就是说要建立一个回调函数。调用Win32 API,原型如下:BOOL SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine, // 回调函数BOOL Add // 表示添加还是删除); 参数HandlerRoutine是一个指向函数的指针,原型如下: BOOL WINAP...
阅读全文
摘要:SO_LINGER 此选项指定函数close对面向连接的协议如何操作(如TCP)。缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。SO_LINGER选项用来改变此缺省设置。使用如下结构:struct linger { int l_onoff; /* 0 = off, nozero = on */ int l_linger; /* linger time...
阅读全文
摘要:strcpy只能处理字符串;如果拷贝带有特殊字符的串,就只能用memcpy或memmove。memcpy和memmove功能基本上差不多,但是当源串和目标串有Overlap时,memmove可以正确处理,memcpy则不行。memcpy()和memmove()都是C语言中的库函数,在头文件string.h中,其原型分别如下: void *memcpy(void *dst, const void *...
阅读全文
摘要:析构函数中不能用KillTimer, 原因:在析构函数中窗口已经不存在,所以KillTimer函数已经没有了窗口句柄,当然会出错 使用位置:BOOL DestroyWindow(void)函数中. 如: BOOL TestDlg::DestroyWindow() { // TODO: Add your specialized code here and/or call the base cla...
阅读全文
摘要:TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。使用非常简单,格式如下:TRACE("DDDDDDDDDDD");TRACE("wewe%d",333);同样还存在TRACE0,TRACE1,TRACE2。。。分别对应0,1,2。。个参数TR...
阅读全文
摘要:VARIANT variant_inp;COleSafeArray safearray_inp;LONG len, k;BYTE rxdata[2048];CString strtemp;if (m_ctrlComm.GetCommEvent()==2)事件值为2表示接收缓冲区内有字符{variant_inp=m_ctrlComm.GetInput();读缓冲区safearray_inp=vari...
阅读全文
摘要:#include <iostream.h>using namespace std;然后编译时出现 error C2871: 'std' : does not exist or is not a namespace查了一下,原来 C++有两个不同版本的头文件。引入名字空间这个概念以前编译器用的是#include <iostream.h>,而引入名字空间的概念以后std名字空间...
阅读全文
摘要:〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效。〖14〗-存储器不足,无法完成此操作。〖15〗-系...
阅读全文
摘要:vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。 list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间可...
阅读全文
摘要:#include<iostream>using namespace std;int main(){char a[]={'h','e','l','\0'};cout<<a<<endl;return 0;}#include<iostream>using namespace std;int main(){int a[]={1,2,3};cout<&l...
阅读全文
摘要:#include <stdio.h>void main( void ){char c;int i;printf("input your choice:\n");scanf("%c",&c);while (c=='y'){printf( "\n\nEnter an int\n");scanf("%d",&i);printf("your input : %d\n",i);p...
阅读全文
摘要:Q qjwn: 操作系统:win98 编程工具:vc++ 问题:我在编译程序中老出现“fatal error C1010: unexpected end of file while looking for precompiled header directive”这一句,但我查看了程序并没有错,请问这是怎么一回事? A回答: 肯定是一个新添加的类的.cpp文件开头没包含st...
阅读全文
摘要:1.设置edit只读属性 方法一: m_edit1.SetReadOnly(TRUE); 方法二: ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);2.判断edit中光标状态并得到选中内容(richedit同样适用) int nStart, nEnd; CString strTemp; m_edit1.GetSel(nStart, nE...
阅读全文
摘要:学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。初学者在学习VC++的过程中,遇到的LNK2001错误的错误消息主要为: unresolved ext...
阅读全文
摘要:碰到了这个问题,在网上找到了解决方案,如下所示:VC缺省链接库的顺序不对导致链接错误error LNK2005: "void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined in libcpmt.lib(delop.obj)在编译工程UDPDriver时,MFC static Library和Code Generatio...
阅读全文