点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!
来源:技术让梦想更伟大
1#define FSIZ( type, field ) sizeof( ((type *) 0)->field )
1#define FLIPW( ray ) ( (((word) (ray)[0]) * 256) + (ray)[1] )
1#define RND8( x ) ((((x) + 7) / 8 ) * 8 )
1#define UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )
1#define DECCHK( c ) ((c) >= '0' && (c) <= '9')
1#define INC_SAT( val ) (val = ((val)+1 > (val)) ? (val)+1 : (val))
1#define ARR_SIZE( a ) ( sizeof( (a) ) / sizeof( (a[0]) ) )
1#define MOD_BY_POWER_OF_TWO( val, mod_by ) \
2( (dword)(val) & (dword)((mod_by)-1) )
1#define inp(port) (*((volatile byte *) (port)))
2#define inpw(port) (*((volatile word *) (port)))
3#define inpdw(port) (*((volatile dword *)(port)))
4#define outp(port, val) (*((volatile byte *) (port)) = ((byte) (val)))
5#define outpw(port, val) (*((volatile word *) (port)) = ((word) (val)))
6#define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val)))
_ L I N E _
及_ F I L E _
宏指令在有关# l i n e
的部分中已讨论,这里讨论其余的宏名。_ D AT E _
宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。_ T I M E _
中。串形式为时:分:秒。_ S T D C _
含有十进制常量1。如果它含有任何其它数,则实现是非标准的。_DEBUG
,输出数据信息和所在文件所在行1#ifdef _DEBUG
2#define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_)
3#else
4#define DEBUGMSG(msg,date)
5#endif
1#define ADD(a,b) (a+b)
do{}while(0)
语句包含多语句防止错误1#difne DO(a,b) a+b;\
2a++;
1if(….)
2DO(a,b); //产生错误
3else
1#difne DO(a,b) do{a+b;\
2a++;}while(0)
猜你喜欢:
嵌入式大杂烩文章精选
干货 | 分享一个实用的、可应用于单片机的内存管理模块
C语言、嵌入式项目中一些常用知识及技巧:第一弹
长文 | C语言从入门到精通保姆级教程(下)
长文 | C语言从入门到精通保姆级教程(上)
在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总。
文章都看完了不点个吗