<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lin28690的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lin28690</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lin28690]]></copyright><item><title><![CDATA[使用InternetGetConnectedState这个API判断网络是否连通]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/46842537</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/46842537</guid><author>lin28690</author><pubDate>Sat, 11 Jul 2015 16:06:01 +0800</pubDate><description><![CDATA[分类： WinCE/ Windows C#/VC++









[cpp] view
 plaincopy






#include "Wininet.h"  
#pragma comment(lib,"Wininet.lib")  
  
DWORD   flags;//上网方式     
BOOL   m_bOnline;//是否在线  ]]></description><category></category></item><item><title><![CDATA[Windows程序调试----简介]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/22591815</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/22591815</guid><author>lin28690</author><pubDate>Sun, 30 Mar 2014 16:18:38 +0800</pubDate><description><![CDATA[简介

    错误是无处不在的。程序产生错误的原闵很多，也有很多防止、检侧和消除错误的策略、工具和技术。随着软件开发技术的提高，软件的复杂程度也提高了，调试工怍更难于进行。程序员们为开发出完美的无错误软件而不懈地努力。伹这个目标在现实中是很难实现的。

    复杂性是开发无错误软件的主要障碍。即使是开发最普通的程序，不经过细致的测试和调试，也不能断定其中不含任何错误。复杂庞大的程序是错]]></description><category></category></item><item><title><![CDATA[Windows程序调试----前言]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/22591647</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/22591647</guid><author>lin28690</author><pubDate>Sun, 30 Mar 2014 16:14:28 +0800</pubDate><description><![CDATA[前言

    调试Windows程序是项浩大、复杂的工程,一些介绍有关Windows调试的所有方面的书，动辄就能达到这本书的两倍厚。但是全面介绍的书籍有一个缺点.就是它太厚了，令人望之生畏，恐怕很少有人想读它。所以，这本书中，我们圈定了一个范围，将重点放在Windows调试的某些方面。下面介绍这个范围是如何挑选的。

    本书最基本的动机建立在这样的信念上：如果程序员能更好地获取调试]]></description><category></category></item><item><title><![CDATA[ora-02049,解决一例 数据库死锁问题]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/17073607</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/17073607</guid><author>lin28690</author><pubDate>Mon, 02 Dec 2013 14:57:34 +0800</pubDate><description><![CDATA[必须在sqlplus中执行；
ora-02049解决一例 
=========================================================== 
作者: guyeh(http://guyeh.itpub.net)
发表于:2008.09.10 16:25
分类: 数据库 
出处：http://guyeh.itpub.net/post/34115/47]]></description><category></category></item><item><title><![CDATA[C++的try_catch异常]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8594664</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8594664</guid><author>lin28690</author><pubDate>Wed, 20 Feb 2013 15:08:35 +0800</pubDate><description><![CDATA[一、简单的例子

首先通过一个简单的例子来熟悉C++ 的 try/catch/throw:

1    #include                                 //包含头文件
2    #include
3    double fuc(double x, double y)                        //定义函数
4    {
5]]></description><category></category></item><item><title><![CDATA[TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR 之间的联系与区别]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8492898</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8492898</guid><author>lin28690</author><pubDate>Fri, 11 Jan 2013 11:25:14 +0800</pubDate><description><![CDATA[许多C++程序员在面对那些像TCHAR，LPCTSTR等奇怪的标示符时，很疑惑。这里，我将简要地介绍一些他们的来龙去脉。 






    一般来说，一个字符可以使1到2个字节。我们称1字节字符为ANSI，被用于英文字母的表示；称2字节字符为Unicode，可以用来表示世界上所有的语言。



 
   VC++中分别用char和wchar_t作为表示ANSI和Unic]]></description><category></category></item><item><title><![CDATA[类型转换(DWORD)(*m_pStroreMap)[(void*)pOb]]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8484902</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8484902</guid><author>lin28690</author><pubDate>Wed, 09 Jan 2013 11:32:22 +0800</pubDate><description><![CDATA[1 是的，有的类型不能直接转化，所以有必要
2 pob是其他类型的指针，不能直接转化成整数，所以先转成void*，然后编译器默认转化成int]]></description><category></category></item><item><title><![CDATA[CDC、HDC、pDC （转）]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8477184</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8477184</guid><author>lin28690</author><pubDate>Mon, 07 Jan 2013 15:18:31 +0800</pubDate><description><![CDATA[1.CDC *pDC和HDC hdc有什么不同,类似的有CWnd *pWnd和HWnd?

pDC是类指针

HDC是windows句柄

通过pDC获得hdc:

HDC hdc=pDC->GetSafeHdc();

通过hdc获得pDC:

CDC *pDC=new CDC;

pDC->Attach(hdc);

2.hDC和CDC有本质区别

HDC是]]></description><category></category></item><item><title><![CDATA[#define和typefef的区别详解]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8370530</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8370530</guid><author>lin28690</author><pubDate>Sat, 22 Dec 2012 03:04:49 +0800</pubDate><description><![CDATA[1) #define是预处理指令，在编译预处理时进行简单的替换，不作正确性检查，不关含义是否正确照样带入，只有在编译已被展开的源程序时才会发现可能的错误并报错。例如： 
#define PI 3.1415926 
程序中的：area=PI*r*r 会替换为3.1415926*r*r 
如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 

2）typedef是在编译时处]]></description><category></category></item><item><title><![CDATA[what is the difference between "delete []m_data"and "delete m_data"]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8210388</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8210388</guid><author>lin28690</author><pubDate>Wed, 21 Nov 2012 23:51:30 +0800</pubDate><description><![CDATA[delete m_data不是只释放一个单元么？ 

 

 

不是，

 

对于 char, int, float....等等内部数据类型， delete 和 delete[] 一样

 

但对于类就大有不同

 

比如

 

char* p = new char[128];

 

delete p;

 

和]]></description><category></category></item><item><title><![CDATA[c++return总结]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8174879</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8174879</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 16:10:16 +0800</pubDate><description><![CDATA[return是C++预定义的语句，当return语句提供了一个值时，这个值就成为函数的返回值. 

很多人甚至市面上的一些书籍，都使用了void main( ) ，其实这是错误的。C/C++ 中从来没有定义过void main( ) 。

C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着

The definition void main( ) {]]></description><category></category></item><item><title><![CDATA[指向指针的指针**p改变*p值可以传递数值并且不改变p地址]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8174797</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8174797</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 15:56:10 +0800</pubDate><description><![CDATA[一． 回顾指针概念：
今天我们又要学习一个叫做指向另一指针地址的指针。让我们先回顾一下指针的概念吧！
当我们程序如下申明变量：
short int i;
char a;
short int * pi;
程序会在内存某地址空间上为各变量开辟空间，如下图所示。
内存地址→6     7      8     9     10     11    12    13     14    15]]></description><category></category></item><item><title><![CDATA[c/c++内存分配]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8174533</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8174533</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 15:06:09 +0800</pubDate><description><![CDATA[一、预备知识—程序的内存分配

一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区（stack）— 由编译器自动分配释放 ，存放函数的参数值，局部变量的值等。其操作方式类似于

数据结构中的栈。
2、堆区（heap） — 一般由程序员分配释放， 若程序员不释放，程序结束时可能由OS回收 。注意它与

数据结构中的堆是两回事，分配方式倒是类似于链表，呵呵。
3、全局区（]]></description><category></category></item><item><title><![CDATA[sizeof VS strlen]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8174315</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8174315</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 14:37:42 +0800</pubDate><description><![CDATA[Sizeof与Strlen的区别与联系1.sizeof操作符的结果类型是size_t，它在头文件中typedef为unsigned　int类型。
该类型保证能容纳实现所建立的最大对象的字节大小。

2.sizeof是算符，strlen是函数。

3.sizeof可以用类型做参数，strlen只能用char*做参数，且必须是以''\0''结尾的。
sizeof还可以用函数做参数，比如：]]></description><category></category></item><item><title><![CDATA[sizeof(str)注意啦，struct对齐机制起作用~\(≧▽≦)/~啦啦啦]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8174194</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8174194</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 14:12:32 +0800</pubDate><description><![CDATA[下面一段代码：


char str[ ]= ”Hello”; 
char *p=str; 
int n=10; 

sizeof(str)=( 6 ) 
sizeof(p)=( 4 ) 
sizeof(n)=( 4 ) 



void func(char str[100]) 
{ } 
sizeof(str)=( 4 ) //传递的参数是以指针形式传递的。
ty]]></description><category></category></item><item><title><![CDATA[智力题猜药品正确答案]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8172570</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8172570</guid><author>lin28690</author><pubDate>Mon, 12 Nov 2012 00:11:40 +0800</pubDate><description><![CDATA[有十瓶药，每瓶里都装有100片药（仿佛现在装一百片的少了，都是十片二十片的，不管，咱们就这么来了），其中有八瓶里的药每片重10克，另有两瓶里的药每片重9克。用一个蛮精确的小秤，只称一次，如何找出份量较轻的那两个药瓶
正确解法1.2.4.7.11.16.22.29.37.46.56]]></description><category></category></item><item><title><![CDATA[GetMemory错误程序讲解（指针练习）]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8170455</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8170455</guid><author>lin28690</author><pubDate>Sun, 11 Nov 2012 00:40:59 +0800</pubDate><description><![CDATA[void GetMemory( char *p )
{
　p = (char *) malloc( 100 );
}
void Test( void ) 
{
　char *str = NULL;
　GetMemory( str ); 
　strcpy( str, "hello world" );
　printf( “%s”，str );
}

 这个一个考验对指针理解的题]]></description><category></category></item><item><title><![CDATA[GetMemory函数的几种经典考法]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8170308</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8170308</guid><author>lin28690</author><pubDate>Sat, 10 Nov 2012 23:38:45 +0800</pubDate><description><![CDATA[如果函数的参数是一个指针，不要指望用该指针去申请动态内存。示例7-4-1中，Test函数的语句GetMemory(str,
 200)并没有使str获得期望的内存，str依旧是NULL，为什么？




void GetMemory(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}




voi]]></description><category></category></item><item><title><![CDATA[零值比较(bool,int,float,指针变量与零值比较的if语句]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8170182</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8170182</guid><author>lin28690</author><pubDate>Sat, 10 Nov 2012 22:01:11 +0800</pubDate><description><![CDATA[这是程序员面试的一道常见题，也是个C++基础问题。若只在大学里看过几本基础的编程入门书，看见这道题可能会觉得奇怪，不就是和0比较吗，直接拿出来比就是了，其实非也。下文引自google搜索结果，出处不详，高手可以无视，菜菜留下，记得做好笔记。
首先给个提示：题目中要求的是零值比较，而非与0进行比较，在C++里“零值”的范围可就大了，可以是0， 0.0 ，FALSE或者“空指针”。

①int型]]></description><category></category></item><item><title><![CDATA[复杂表达式解读。eg：char   (*(*x())[])()]]></title><link>https://blog.youkuaiyun.com/lin28690/article/details/8122365</link><guid>https://blog.youkuaiyun.com/lin28690/article/details/8122365</guid><author>lin28690</author><pubDate>Sun, 28 Oct 2012 22:35:40 +0800</pubDate><description><![CDATA[Thinking   in   C++   里   作者介绍了一个简单的方法来解读复杂的定义式,   称为right-left   guideline.   简单的说就是从中间的变量名开始,   按右-左-右-左...的顺序来读.   以这个题目为例: 

char   (*(*x())[])() 

从x开始: 
1.向右看到(),   x是一个函数定义,   没有参数; 
2.向左]]></description><category></category></item></channel></rss>