今天继续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引用标准库函数呢?
这里不做讨论,有兴趣的可以自己看看。