汇编中‘$’的用法在C中应用什么代替?

dwMsgTable    dd    WM_NULL
        dd    WM_ENTERSIZEMOVE
        dd    WM_EXITSIZEMOVE
        dd    WM_SETFOCUS
        dd    WM_KILLFOCUS
        dd    WM_ENABLE
        dd    WM_SETREDRAW
        .    .
        .    .
        .    .    //中间很多行类似的代码
        dd    WM_SETTEXT
        dd    WM_GETTEXT
        dd    WM_GETTEXTLENGTH
        dd    WM_PAINT
        dd    WM_CLOSE
        dd    WM_QUERYENDSESS
MSG_TABLE_LEN    equ    ($ - dwMsgTable)/sizeof dword

$表示当前的偏移量,在C中这种用法如何实现?

阅读 2.5k
1 个回答

$ 表示当前代码行的地址,dwMsgTable是起始地址。这两个地址差除以dword的大小,就是"个数"
C里面用 sizeof 就可以了

同样数据类型用数组就可以了。

#typedef unsigned short DWORD
DWORD dwMsgTable[] = {WM_NULL,WM_ENTERSIZEMOVE 。。。。。。};
size_t MSG_TABLE_LEN = sizeof(dwMsgTable)/sizeof(DWORD);

这个是为了遍历所有window消息吧,C的话用 switch是不是更好呢。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进