BaoFu
驱动小牛
驱动小牛
  • 注册日期2002-10-07
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1434回复:5

win2k DDK例子中的疑惑

楼主#
更多 发布于:2004-01-02 07:04
阅读\\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]
y5318
驱动中牛
驱动中牛
  • 注册日期2001-09-18
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-01-02 07:46
在这个例子中,出现在mouclass.h中的很多函数原型,在mouclass.c中都找不到对应的函数实体。即出现了声明之后没有使用的现象。有可能因为在mouclass.c中跟本不要用.
BaoFu
驱动小牛
驱动小牛
  • 注册日期2002-10-07
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-02 18:07
谢谢了,但后一个问题还是无法解释。
flyonearth
驱动中牛
驱动中牛
  • 注册日期2002-12-25
  • 最后登录2009-07-01
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-05 11:50
不申明就使用是完全可以的,至少我用过的Borland和MS的编译器是允许的,不信你试试。
BaoFu
驱动小牛
驱动小牛
  • 注册日期2002-10-07
  • 最后登录2010-11-25
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望9点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-05 18:51
但C语言不是规定所有的变量、函数都是先声明然后才能使用的吗?
y5318
驱动中牛
驱动中牛
  • 注册日期2001-09-18
  • 最后登录2018-05-29
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望22点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-01-05 19:06
你开发的时候,用的是纯c吗?,如果不是,就没有必要.
游客

返回顶部