首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PreProcessing #定义

PreProcessing #定义
EN

Stack Overflow用户
提问于 2011-02-16 23:40:06
回答 2查看 192关注 0票数 2

我不能理解预处理器是如何工作的,在这个特定的例子中##代表什么

代码语言:javascript
复制
#include <stdio.h>

#define TEMP_KEY(type,Key) (TEMP_##type | Key)

enum TEMPKey_Type
{
    TEMP_UNKNOWN = 0,
    TEMP_SPECIAL ,
    TEMP_UNICODE
};

enum Actual_Key
{
    TEMP_RIGHT = TEMP_KEY(UNKNOWN,0x1),
    TEMP_LEFT = TEMP_KEY(SPECIAL,0x1),
    TEMP_UP = TEMP_KEY(UNICODE,0x1)
};

int main()
{
    printf("\n Value of TEMP_RIGHT : %d ",TEMP_RIGHT);
    printf("\n Value of TEMP_LEFT : %d ",TEMP_LEFT);
    printf("\n Value of TEMP_UP : %d ",TEMP_UP);

    return 0;
}

这个#define TEMP_KEY(type,Key) (TEMP_##type | Key)是如何工作的,或者在预处理过程中TEMP_##type到底是如何替换的,又是用什么替换的?

EN

回答 2

Stack Overflow用户

发布于 2011-02-16 23:43:12

"##“表示拼接。因此TEMP_RIGHT = TEMP_KEY(UNKNOWN,0x1)变成了未知("TEMP_“和”TEMP_RIGHT = TEMP_UNKNOWN | 0x1,“连接在一起)

票数 4
EN

Stack Overflow用户

发布于 2011-02-16 23:44:08

##是#define指令中的连接运算符。

例如,TEMP_KEY的TEMP_##type (UNICODE,0x1)调用生成下一个代码:

代码语言:javascript
复制
(TEMP_UNICODE | 0x1)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5018465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档