volcanol的工控博客
Email : lilinly225@126.com 索要资料加QQ 点击进入 或 点击左侧的资料分享专用帖

volcanol ---- View OF Linux Can Appreciate Nature OF Linux

天行健,君子以自强不息

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

     今天继续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引用标准库函数呢?

   这里不做讨论,有兴趣的可以自己看看。

posted on 2011-10-16 19:24  volcanol  阅读(261)  评论(0编辑  收藏  举报
volcanol ----View OF Linux Can Appreciate Nature OF Linux。