摘要:
最近发现winsock2.h头文件与windows.h头文件在同时包含的时候会有问题,编译时会产生很多类型重复定义的错误。分析一下winsock.h、winsock2.h和windows.h三个头文件,可以发现:要解决这个问题,需要首先包含winsock2.h,然后再包括windows.h,要注意包含的顺序。 在Windows.h中,包含了winsock.h(winsock.h支持socket 1.1)。因此首先包含windows.h,然后再包含winsock2.h,显然会出现问题。 阅读全文
摘要:
如果你现在写的代码使用的是SBCS (ASCII)字符集,但是过一段时间后某个客户跟你说他们现在的系统只支持Unicode (wide-character)字符集,你怎么办呢?问题的答案就在微软给我们提供的tchar.h头文件里面! 通过研究msdn知道,微软为了方便程序写出能够使用不同字符集的通用代码,特别为程序员提供了这个头文件,头文件的功能就是实现了 数据类型、函数以及其他对象依据宏定义进行map过程。 msdn的对该文件的描述如下: To simplify transporting code for international use, the Microsoft run-time l 阅读全文
摘要:
LPCWSTR 的类型是 const wchar_t *,而 const char[] 是 const char * ,类型不兼容,不能隐式转换。你的可以设置项目所使用的语言,在项目属性里设置。你也可以不要使用 char 类型,均改为使用 TCHAR 宏,它会根据项目属性自动替换为 char 或 wchar_t ,如 TCHAR Buf[],程序中的字符串字面值也使用 _T() 宏,如 _T("abcd"),请参考 tchar.h 的文档 。你也可以使用函数转换,将 char 类型 转换为 wchar_t ,如函数 mbstowcs() 等。 阅读全文
摘要:
Debug 和 Release 编译方式的区别Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论)Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数) /ZI 创建 Edit and continue(编辑继续) 阅读全文
摘要:
结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。比如:C,FORTRAN,PASCAL等等 结构化程序设计方法主要由以下三种逻辑结构组成: 1)顺序结构:顺序结构是一种线性、有序的结构,它依次执行各语句 阅读全文