#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胶水(高,低)=胶水(高,低,世界)=“你好,世界”
发布于 2014-01-08 20:55:44
首先,没有递归宏。
示例中的大部分工作由两个预处理操作符#和##执行。
#是一个一元运算符,它将其参数转换为字符串文本。
##是一个二进制运算符,它将两个令牌粘贴在一起,形成一个令牌。
检查给定的预处理器代码扩展到什么的最简单的方法实际上是运行预处理器。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;
}https://stackoverflow.com/questions/21005219
复制相似问题