查看: 4128|回复: 11

[分享] YL-KL26Z例程里的一句宏定义

[复制链接]

该用户从未签到

19

主题

401

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1114
最后登录
2017-8-16
发表于 2015-8-17 23:17:56 | 显示全部楼层 |阅读模式
#efine V_PORT_ENABLE_CLK(V_PTO)    SIM_SCGC5 |=  SIM_SCGC5_PORT##V_PTO##_MASK

后面的注释是 “二次连接,防止出错”,  这是什么用法??

评分

参与人数 1NXP金币 +3 收起 理由
小七 + 3

查看全部评分

回复

使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
    发表于 2015-8-18 09:13:12 | 显示全部楼层
    在C语言中,##这个宏代表连接前后字符串。

    比如:
    #define PTD(n)   PTD ## n

    那么PTD(1) 就是 PTD1

    评分

    参与人数 1NXP金币 +10 收起 理由
    小七 + 10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-12-2 17:41
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    23

    主题

    448

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1135
    最后登录
    2019-12-2
    发表于 2015-8-18 09:15:00 | 显示全部楼层
    学习了,学习
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16715
    最后登录
    1970-1-1
    发表于 2015-8-18 09:24:46 | 显示全部楼层
    shaoziyang 发表于 2015-8-18 09:13
    在C语言中,##这个宏代表连接前后字符串。

    比如:

    ziyang兄正解,学习了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-1-24 09:50
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    654

    主题

    3262

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    13147
    最后登录
    2019-1-27
    发表于 2015-8-18 09:42:47 | 显示全部楼层
    shaoziyang 发表于 2015-8-18 09:13
    在C语言中,##这个宏代表连接前后字符串。

    比如:

    谢谢版主解答
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19

    主题

    401

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1114
    最后登录
    2017-8-16
     楼主| 发表于 2015-8-18 09:56:03 | 显示全部楼层
    shaoziyang 发表于 2015-8-18 09:13
    在C语言中,##这个宏代表连接前后字符串。

    比如:

    多谢版主,   还有一个小问题 , 就是那一句后面的注释  ”二次连接 “  是什么意思呢?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5785
    最后登录
    2025-5-7
    发表于 2015-8-18 12:35:47 | 显示全部楼层
    673402618 发表于 2015-8-18 09:56
    多谢版主,   还有一个小问题 , 就是那一句后面的注释  ”二次连接 “  是什么意思呢? ...

    二次连接是防止编译器展开时出错
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-18 14:37:34 | 显示全部楼层
    673402618 发表于 2015-8-18 09:56
    多谢版主,   还有一个小问题 , 就是那一句后面的注释  ”二次连接 “  是什么意思呢? ...

    二次链接,是你一楼,用了两次##,所以是二次链接。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19

    主题

    401

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1114
    最后登录
    2017-8-16
     楼主| 发表于 2015-8-18 21:37:21 | 显示全部楼层
    FSL_TICS_ZJJ 发表于 2015-8-18 14:37
    二次链接,是你一楼,用了两次##,所以是二次链接。

    是不是说 ,  如果只用一次## , #define V_PORT_ENABLE_CLK(V_PTO)    SIM_SCGC5 |=  SIM_SCGC5_PORT##V_PTO_MASK      编译器会认为 V_PTO_MASK 整体应该被替换, 而前面没有这一项, 就会出错?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-19 09:31:24 | 显示全部楼层
    673402618 发表于 2015-8-18 21:37
    是不是说 ,  如果只用一次## , #define V_PORT_ENABLE_CLK(V_PTO)    SIM_SCGC5 |=  SIM_SCGC5_PORT##V ...

    我认为,如果后面不加##,有些编译器会认为V_PTO_MASK是一个整体,可能识别不到V_PTO出错。
    所以加上##就相当于把V_PTO独立分开,这样保证能够正确识别,防止出错。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 08:30 , Processed in 0.101082 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表