首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归宏传播的结果是什么?

递归宏传播的结果是什么?
EN

Stack Overflow用户
提问于 2014-01-08 19:52:24
回答 1查看 88关注 0票数 0
代码语言:javascript
复制
#include <iostream>
#define help(a) #a
#define xhelp(a) help(a)
#define glue(a,b) a##b
#define xglue(a,b) glue(a,b)
#define HIGHLOW "hello"
#define LOWLOW ",world" 
int main() 
{
              std::cout<<xhelp(xglue(HIGH,LOW))<<std::endl;
              return 0;
 }

这是我的测试代码。我想知道MACOR x胶的传播情况(高,低)。

对我来说,结果就是“你好”

但我从一个网站上了解到,结果是“你好,世界”。

我真的很困惑。

我的代码的结果是“你好”。

有人能帮我吗?

我认为xgule(高,低)=胶水(高,低)=HIGHLOW=“hello”

THe网站显示,x胶水(高,低)=胶水(高,低,世界)=“你好,世界”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 20:55:44

首先,没有递归宏。

示例中的大部分工作由两个预处理操作符###执行。

#是一个一元运算符,它将其参数转换为字符串文本。

##是一个二进制运算符,它将两个令牌粘贴在一起,形成一个令牌。

检查给定的预处理器代码扩展到什么的最简单的方法实际上是运行预处理器。g++编译器有一个-E选项来做到这一点。

代码语言:javascript
复制
# Assuming your file is saved as code.cpp
$ g++ -E code.cpp
... lots of output ...
int main()
{
    std::cout<<"\"hello\""<<std::endl;
    return 0;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21005219

复制
相关文章

相似问题

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