递归宏点差的结果是什么
what is the result about the recursive Macro spread?
#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(高,低)的传播。
对我来说,我认为结果是"你好"
但我从一个网站上了解到,结果是"你好,世界"。
我真的很困惑。
我的代码的结果是"你好"。
有人可以帮助我吗?
我认为xgule(高,低)=胶水(高,低)=高低="你好"
网站显示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;
}
相关文章:
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- std::chrono::duration::count函数的实际结果类型是什么
- 术语的计算结果不是采用0个参数的函数
- 错误 C2064:术语的计算结果不是采用 3 个参数的函数
- C++:术语的计算结果不是采用 1 个参数的函数
- ZTV,ZTS,ZTI 在 gdb x/nfu "vtable_address" 的结果中是什么意思?
- 错误 C2064:term 的计算结果不是采用 1 个参数的函数 - 关于线程的一些东西
- 如何打印返回值的结果?我是一个初学者学习C++
- 即使在C 中越过初始化阵列的极限后,结果也是如此
- 使用FP:快速导致错误的VC 结果(不仅仅是不准确)结果 - 这是编译器错误
- 我收到此错误:错误 c2064:term 的计算结果不是采用 0 个参数的函数,但我不明白为什么
- C++时间()给我的结果几乎是随机的
- 三元运算符的结果不是右值
- 为什么"decltype(i+j)"的结果不是右值引用?
- 简单的代码,看似随机的结果——这是由于过时的引用造成的吗
- wxwidgets Bind()项的计算结果不是在event.h中使用1个参数的函数
- 我正在尝试用C++制作一个费用计算器,我得到了错误C2064:term的计算结果不是一个带1个参数的函数
- 取消引用无效指针但不使用结果是否是C++中的未定义行为
- 字符* 到字符串 c++(结果不是预期的)
- 错误C2064:术语的计算结果不是一个带1个参数的函数,我该如何克服这个错误