gpt4 book ai didi

c++ - 递归宏传播的结果是什么?

转载 作者:行者123 更新时间:2023-11-30 17:41:46 34 4
gpt4 key购买 nike

#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 xglue(HIGH,LOW)的传播。

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

但是我从一个网站学习,结果是“hello, world”。

我真的很困惑。

我的代码的结果是“hello”。

有人可以帮我吗?

我认为 xgule(HIGH,LOW)=glue(HIGH,LOW)=HIGHLOW="hello"

网站显示 xglue(HIGH,LOW)=glue(HIGH,LOW",world")="hello, world"

最佳答案

首先,没有递归宏。

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

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

## 是一个二元运算符,它将两个标记粘贴在一起以形成一个标记。

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

# Assuming your file is saved as code.cpp
$ g++ -E code.cpp
... lots of output ...
int main()
{
std::cout<<"\"hello\""<<std::endl;
return 0;
}

关于c++ - 递归宏传播的结果是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21005219/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com