将这几个宏写成行数的形式如何写?

dsoyy 2010-04-09 10:28:20
将这几个宏写成行数的形式如何写?
#if _WORD_ACCESS == 1 // Enable word access to the FAT structure
#define LD_WORD(ptr) (WORD)(*(WORD*)(BYTE*)(ptr))
#define LD_DWORD(ptr) (DWORD)(*(DWORD*)(BYTE*)(ptr))
#define ST_WORD(ptr,val) *(WORD*)(BYTE*)(ptr)=(WORD)(val)
#define ST_DWORD(ptr,val) *(DWORD*)(BYTE*)(ptr)=(DWORD)(val)
#else //Use byte-by-byte access to the FAT structure
#define LD_WORD(ptr) (WORD)(((WORD)*(BYTE*)((ptr)+1)<<8)|(WORD)*(BYTE*)(ptr))
#define LD_DWORD(ptr) (DWORD)(((DWORD)*(BYTE*)((ptr)+3)<<24)|((DWORD)*(BYTE*)((ptr)+2)<<16)|((WORD)*(BYTE*)((ptr)+1)<<8)|*(BYTE*)(ptr))
#define ST_WORD(ptr,val) *(BYTE*)(ptr)=(BYTE)(val); *(BYTE*)((ptr)+1)=(BYTE)((WORD)(val)>>8)
#define ST_DWORD(ptr,val) *(BYTE*)(ptr)=(BYTE)(val); *(BYTE*)((ptr)+1)=(BYTE)((WORD)(val)>>8); *(BYTE*)((ptr)+2)=(BYTE)((DWORD)(val)>>16); *(BYTE*)((ptr)+3)=(BYTE)((DWORD)(val)>>24)
#endif

低8位在前面,高8位在后面),
...全文
101 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsoyy 2010-04-09
  • 打赏
  • 举报
回复
我解释原因,我在移植FATFS,由于编译器的原因,这些宏就会出错,有经验分享显示改成函数代替宏问题就解决了,但是原因不得而知
fox000002 2010-04-09
  • 打赏
  • 举报
回复
这些个写成函数也没啥意义
jackyjkchen 2010-04-09
  • 打赏
  • 举报
回复
就是一些强转移位,用函数还不如用宏
selooloo 2010-04-09
  • 打赏
  • 举报
回复
可以用 do while
不过你这些宏都是定义,没什么函数的功能吧
dsoyy 2010-04-09
  • 打赏
  • 举报
回复
宏函数,改写成函数形式,不是行数
a7182388 2010-04-09
  • 打赏
  • 举报
回复
这个选择编译要怎么写成行数!!
行数??我没明白意思!!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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