今天继续windows的via C之旅,看的书是《精通Windows_API_函数_接口_编程实例》,里面提到了windows的数据类型。我摘录一到两段
书中的内容供大家鉴赏鉴赏。
1、数据类型的图
有点伤不起啊,DWORD的类型的数据,在内存中占用的字节数居然可以达到32字节。不知道是图书的编辑人员弄错了,还是编书的人弄错了。果然很有钱,什么都是用
大的。
2、概念混淆的图
我不知道为什么这么多的人,都把指针类型或者基类型为char的数组类型称为字符串变量。从我个人的学习经历来看,估计是受谭的书的影响。 明明是char的数组类型
非的叫字符串,还整出个字符串变量, 不知道是C也是面向对象的C++扩展 ? 真的很纳闷....
3、认知错误
不知道为什么,会有这样的表述, 哎,我真的看不懂,很迷惑,一段话前后描述不一致至此,很无语。
4、不过这本书,还是有几个地方还是不错的。下面是这本书上的一个文件操作的例子。
/*
*
*This program used to get system information,and then save it.
*
*/
#include <windows.h>
#ifdef MAX_PATH
#undef MAX_PATH
#endif
#define MAX_PATH 128
int main(int argc,char **argv)
{
//Define File handle
HANDLE hFile;
DWORD dwWritten;
//define a char array to save the system directory
TCHAR szSysDirectory[MAX_PATH];
//Get the system directory
::GetSystemDirectory(szSysDirectory,MAX_PATH);
//Creat a file systemroot.txt
hFile=::CreateFile("systemroot.txt", //file name you want to create
GENERIC_WRITE, //file access mode
0, //
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL
);
//WRITE FILE
if(INVALID_HANDLE_VALUE != hFile)
{
if(!::WriteFile(hFile,szSysDirectory,lstrlen(szSysDirectory),&dwWritten,NULL))
return GetLastError();
}
//close file
::CloseHandle(hFile);
return 0;
}
原书上对Windows API的引用,没有使用全局作用域运算符 (::) 上面的是我加上的,加上这个是为了和CUI和GUI区分, 习惯上在CUI界面的程序上
引用API我会加上(::), 而在GUI的界面上的时候,则不使用。当然加与不加并不影响程序的执行,只是我个人的习惯而已。
5、书中提到的一个问题
在书中提到了fopen函数和Windows API的关系,简要的论述了一下标准C函数库和Windows API的关系, 一直以来我就有一个疑问,在Windows
上写程序的时候标准C库函数引用API呢? 还是API引用标准库函数呢?
这里不做讨论,有兴趣的可以自己看看。

浙公网安备 33010602011771号