查看: 3707|回复: 5

[CodeWarrior] CodeWarrior C编译器是否支持变参宏定义?

[复制链接]

该用户从未签到

1

主题

24

帖子

0

新手上路

Rank: 1

积分
38
最后登录
1970-1-1
发表于 2013-9-2 09:55:38 | 显示全部楼层 |阅读模式
求助各位大神,CodeWarrior C编译器是否支持变参宏定义?形如:
#define  DBG_PRINTF(fmt, arg...)    printf(fmt, ##arg)
小弟如此写法,总是报C4415错误,去掉省略号编译正常。
我知道答案 目前已有4人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-9-2 10:46:39 | 显示全部楼层

    RE:CodeWarrior C编译器是否支持变参宏定义?

    ##arg
    这个应该是不对的吧。你打算实现什么功能?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    24

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    1970-1-1
     楼主| 发表于 2013-9-2 10:55:43 | 显示全部楼层

    回复:CodeWarrior C编译器是否支持变参宏定义?

    变参宏啊,在VC、Keil上都可以实现的。
    #define DBG_PRINT_EN 1
    #if (DBG_PRINT_EN == 1)
    #define DBG_PRINTF(fmt, arg...)  printf(fmt, ##arg)
    #else
    #define DBG_PRINTF(fmt, arg...)
    #endif
    代码中使用DBG_PRINTF实现打印,调试时DBG_PRINT_EN为1, 发布时DBG_PRINT_EN改为0就可以了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    24

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    1970-1-1
     楼主| 发表于 2013-9-5 09:22:57 | 显示全部楼层

    回复:CodeWarrior C编译器是否支持变参宏定义?

    有没有没有大神指导一下啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-9-5 11:31:10 | 显示全部楼层

    RE:CodeWarrior C编译器是否支持变参宏定义?

    ##代表的是字符串连接符号。直接定义#define DBG_PRINTF(fmt, arg...) printf(fmt, arg)应该就可以了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    24

    帖子

    0

    新手上路

    Rank: 1

    积分
    38
    最后登录
    1970-1-1
     楼主| 发表于 2013-9-6 14:42:31 | 显示全部楼层

    回复:CodeWarrior C编译器是否支持变参宏定义?

    感谢回答。补充一下:
    1.直接定义#define DBG_PRINTF(fmt, arg...) printf(fmt, arg)编译不通过, 主要是arg后面的...,怀疑CodeWarrior不支持变参宏;
    2.#define DBG_PRINTF(fmt, arg...) printf(fmt, ##arg)是gcc/armcc等编译器支持的变参宏标准写法, ##arg只在printf中将arg依次展开.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 21:32 , Processed in 0.096189 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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