阅读:1433回复:5
win2k DDK例子中的疑惑
阅读\\NTDDK\\src\\input\\mouclass目录下的例子代码,产生一个疑惑,详情如下:
这是一个关于鼠标驱动的例子,真正意义上的源代码文件有三个:mouclass.h 、mouclass.c和mouclass.rc 别的是辅助性的文件例如makefile和sources等不在讨论之列。 按照c程序的约定,在头文件中列出的应当是变量和函数原型的声明,而在扩展名为 .c 的文件中才是函数的实体,也就是函数的实际代码部分。这就是所谓的使用之前先声明的原则。 但我发现,在这个例子中,出现在mouclass.h中的很多函数原型,在mouclass.c中都找不到对应的函数实体。即出现了声明之后没有使用的现象。不知道这是为什么? 还有更大的疑惑:即有写函数在.c文件中明明已经存在,却在头文件中查找不到声明。例如MouseClassSetWmiDataBlock。只是在该文件开始有#pragma alloc_text(PAGE,MouseClassSetWmiDataBlock)语句。 只声明不使用还可以解释为留作将来扩充之用,但不声明就使用并不是C语言所允许的。出现在文件开始的 #pragma alloc_text(PAGE,MouseClassSetWmiDataBlock)可以替代函数原型的声明吗? [编辑 - 1/2/04 by BaoFu] |
|
沙发#
发布于:2004-01-02 07:46
在这个例子中,出现在mouclass.h中的很多函数原型,在mouclass.c中都找不到对应的函数实体。即出现了声明之后没有使用的现象。有可能因为在mouclass.c中跟本不要用.
|
|
板凳#
发布于:2004-01-02 18:07
谢谢了,但后一个问题还是无法解释。
|
|
地板#
发布于:2004-01-05 11:50
不申明就使用是完全可以的,至少我用过的Borland和MS的编译器是允许的,不信你试试。
|
|
地下室#
发布于:2004-01-05 18:51
但C语言不是规定所有的变量、函数都是先声明然后才能使用的吗?
|
|
5楼#
发布于:2004-01-05 19:06
你开发的时候,用的是纯c吗?,如果不是,就没有必要.
|
|