您的位置:首页 > 编程语言

Windows 下编程的一些常见问题(不定期更新)

2014-05-16 12:41 246 查看

1 VC中类型BOOL、TRUE、FALSE与c++中的bool数据类型有什么区别与联系?

(1)bool是标准C++数据类型,可取值true和false(都是小写,c++中关键字都是小写)。单独占一个字节, 如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器; BOOL是微软定义的宏typedef int BOOL(宏一般都是大写的,可以利用这一点来帮助理解和判断)。与bool不同,它是一个三值逻辑, TRUE/FALSE/ERROR,返回值为>0的整数为TRUE,0为FALSE,-1为ERROR。 Win32 API中很多返回值为BOOL的函数都是三值逻辑。比如GetMessage()。

(2)BOOL只是一个宏,不是基本的数据类型,BOOL实际上=int,占4个字节空间。bool 是C的基础数据类型,占用1个字节。对于BOOL类型,当值为1时为真,即TRUE;当值为0时为假,即FALSE;FALSE和TRUE都是宏。对于bool类型,值只要不是0就是为真,即true;当值为0时为假,即false;

(3)如果自己用win32 API方式定义的BOOL类型,在判断循环时就跟c++有点区别。c++中,只有true和false,因此可以用while(flag)来写循环,win32 API由于BOOL是个三值逻辑,最好用while(flag==TRUE)来比较。

(4)注:windows为了兼容问题定义的基础变量。

typedef unsigned long DWORD;

typedef int BOOL;

typedef unsigned char BYTE;

typedef unsigned short WORD;

typedef float FLOAT;

2.2 匈牙利表示法





3. Win32 Application 与 Win32 Console Application的区别

前者是普通的基于窗口的,用win32 sdk或MFC开发,在实际开发中使用,入口是WinMain;而后者是命令行的那种,DOS窗口,一般用于教学,入口是main。windows应用程序跟dos下的控制台应用程序最大的区别有两点。第一点是表象的:控制台应用程序是“黑屏的”,而windows应用程序是基于“窗口的”;第二点是内在的,控制台应用程序的核心内容是与操作系统无关的(虽然我们总会频繁的使用printf是得能从屏幕上显示打印结果);而windows应用程序是跟操作系统密切相关的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: