WeiChen
驱动牛犊
驱动牛犊
  • 注册日期2001-06-28
  • 最后登录2005-08-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1241回复:1

怪现象

楼主#
更多 发布于:2001-09-20 13:24
各位兄弟姐妹们:我发现了一个怪问题。

我用的是WIN2000DDK,在DDK的源码的E:\NTDDK\src\wdm\hid\hidgame目录下,有一个hidgame.c的文件,
程序的70行是这样的:
C_ASSERT( sizeof(OEMDATA[2]) == sizeof(GAMEENUM_OEM_DATA) );
其中C_ASSERT定义在同一目录的debug.h文件23行中,定义如下:
#define C_ASSERT(e) switch(0) case(e): case(0):
但是奇怪的是switch语句跟的表达式是0,是一个常量,不知如何理解,请各位指教。
越学越无知!唉!
lms2000
驱动牛犊
驱动牛犊
  • 注册日期2001-05-19
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望102点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2001-09-20 23:54
这是一个compling time assert
也就是说,C_ASSERT(e)中 e为false (0)时,两个值就会一样,
会报错,e为true (1)时则不会,这样可以保证在编译时e为true
游客

返回顶部