关于一段语句定义!

every 2003-01-07 10:42:02
#define PAGENUM(p) (((ULONG)(p)) >> 12)
#define PAGEOFF(p) (((ULONG)(p)) & 0xFFF)
#define PAGEBASE(p) (((ULONG)(p)) & ~0xFFF)
#define _NPAGES_(p, k) ((PAGENUM((char*)p+(k-1)) - PAGENUM(p)) + 1)

......................................
......................................
PVOID Linear;
ULONG nPages = _NPAGES_(PhysAddress, SizeInBytes);
............................................
return (PVOID) ((ULONG)Linear+PAGEOFF(PhysAddress));

谁能详细帮我讲解下这种定义的语法和意义啊
#define 宏定义指令像我们经常用的下面我还明白,可是像上面那种定义和用法我就有点摸着北
# define NAME 1
...全文
34 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjm 2003-01-07
  • 打赏
  • 举报
回复
跟普通的没两样。

例如:
PAGENUM((char*)p+(k-1)) 就是
((ULONG)((char*)p+(k+1)))>>12
coolsnake_pp 2003-01-07
  • 打赏
  • 举报
回复
同意楼上,但是要注意,宏和函数还是很不一样的,宏只是简单的代换。
MoQi_123 2003-01-07
  • 打赏
  • 举报
回复
上面的宏定义类似于函数,可以这样看。例如:
#define PAGENUM(p) (((ULONG)(p)) >> 12)
类似于
void PAGENUM(p)
{
((ULONG)p)>>12;
return;
}
但宏不是函数。在一般C语言书上都有宏的解释
lsbcsdn 2003-01-07
  • 打赏
  • 举报
回复
不好 意思发错了
lsbcsdn 2003-01-07
  • 打赏
  • 举报
回复

我来跟你说说吧!!!
多一个宏定义就可以了。
#define name 2

21,618

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧