3344|7

91

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

新人求助,简单宏定义看不懂,帮帮忙 [复制链接]

#define _ADD_STR(a, b)              a##b

这个a和b是参数吧

那这个##呢

最新回复

我也受教了  详情 回复 发表于 2011-10-18 08:47
 
点赞 关注

回复
举报

1729

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
我们论坛是不是要开一个C语言版块了?你这个CODE可能不全,看不明白什么意思。
 
 

回复

91

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

你都看不懂,还笑我。

#define _ADD_STR(a, b) a##b

#define ADD_STR(a, b) _ADD_STR(a, b)

 /* PxIN */

#define _IO_PORT_IN(PORT) (PORT##IN)

#define GPIO_READ_BITS(PORT, BIT) ( (_IO_PORT_IN(PORT) & BIT) ? (SET):(RESET))

 #define GOIO_READ_PORTS(PORT) ( _IO_PORT_IN(PORT) )

 
 
 

回复

5305

帖子

453

TA的资源

五彩晶圆(高级)

4
 
应该是将a跟b连接在一起
 
 
 

回复

91

帖子

0

TA的资源

纯净的硅(初级)

5
 

原帖由 蓝雨夜 于 2011-9-28 09:26 发表 应该是将a跟b连接在一起

不晓得是怎样一个连法,还望举个例子。

的确从来没看到过这样的语句.

但程序应该是没有错误的。

 
 
 

回复

7183

帖子

195

TA的资源

五彩晶圆(高级)

6
 
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。   #include   #define paster( n ) printf( "token " #n" = %d\n ", token##n )   int main()   {   int token9=10;   paster(9);   return 0;   }   输出为[leshy@leshy src]$ ./a.out token 9 = 10   详见百科#typedef(很相似的)
 
 
 

回复

133

帖子

0

TA的资源

纯净的硅(初级)

7
 
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x

x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
怎么样,很神奇吧

再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P

最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";
 
 
 

回复

158

帖子

0

TA的资源

一粒金砂(高级)

8
 
我也受教了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表