【问题标题】:What means multiple commas in a macro in cc中宏中的多个逗号是什么意思
【发布时间】:2015-11-17 16:32:41
【问题描述】:

这个宏是什么意思或结果是什么?

#define MOD_TYPE_12 0x11, 0x20, 0x0C, 0x00, 0x02, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x02

这是否被评估为一个数组?

我找不到任何东西...也许是因为我不知道我要搜索什么^^

【问题讨论】:

    标签: c arrays macros hex c-preprocessor


    【解决方案1】:

    逗号在宏中没有任何特殊含义,它们只会被复制到使用宏的任何位置。例如:

    int arr = {MOD_TYPE_12};
    

    变成

    int arr = {0x11, 0x20, 0x0C, 0x00, 0x02, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x02};
    

    或者:

    someFunction(MOD_TYPE_12);
    

    变成

    someFunction(0x11, 0x20, 0x0C, 0x00, 0x02, 0x00, 0x07, 0x0F, 0x42, 0x40, 0x01, 0xC9, 0xC3, 0x80, 0x00, 0x02);
    

    【讨论】:

    • 是的,这是有道理的。如果我向下滚动 2000 多行代码,我会看到这个宏的用法:D THX
    • @user3000289 让自己成为一个具有搜索功能的编辑器。
    【解决方案2】:

    所有的

    MOD_TYPE_12

    在您的程序中将被替换为

    0x11, 0x20, 0x0C

    逗号没有特殊意义

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 2011-03-21
      • 2011-09-22
      • 2014-01-17
      • 2012-12-30
      • 1970-01-01
      相关资源
      最近更新 更多