一个关于#define内看不懂的语句

williamvv1 2008-04-02 08:25:57
本人对汇编不熟悉,最近做一个关于单片机的项目时,看到例子程序中有以下代码:
#define IO_DIR_PORT_PIN(port,pin,dir)
do{
if(dir==IO_OUT)
P##por##DIR|=(0x01<<(pin));
else
P##port##DIR&=~(0x01<<(pin));
}while(0)

.....
其中##是运算符还是只不过一个名字?
哪位大侠回下?
...全文
178 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanguopen1 2008-04-24
  • 打赏
  • 举报
回复
我感觉好难。。。
BMCRNET 2008-04-08
  • 打赏
  • 举报
回复
在网上看看
C语言的宏的用法就明白了
用户 昵称 2008-04-05
  • 打赏
  • 举报
回复
IO_DIR_PORT_PIN(port,pin,dir) 
如果
IO_DIR_PORT_PIN( 2, 1, IO_OUT );
会变成
do{P2DIR |= ( 0x01 << 1 )}while(0);
其他的会变成
do{P2DIR &= ( 0x01 << 1 )}while(0);
williamvv1 2008-04-05
  • 打赏
  • 举报
回复
本人看清楚了,在本程序外面已经定义了一个P0DIR P1DIR P2DIR 3个变量,以上程序中P##port##DIR应该就是
连接的意思,目的得到各PxDIR
我啃 2008-04-04
  • 打赏
  • 举报
回复
#define S(a,b) a##b

使用:
S(o,k) ===== ok
别听一楼瞎说
homesos 2008-04-04
  • 打赏
  • 举报
回复
?怎么看不到回复了?
williamvv1 2008-04-02
  • 打赏
  • 举报
回复
谢谢两位大侠相助
williamvv1 2008-04-02
  • 打赏
  • 举报
回复
谢谢两位大侠相助
homesos 2008-04-02
  • 打赏
  • 举报
回复
P##port##DIR
->
表示把P port值 dir值,连接在一起。
homesos 2008-04-02
  • 打赏
  • 举报
回复
##表示把字符串联在一起

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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