假设我想使用一个前缀为\x
的宏,以便替换是一个有效的十六进制转义序列,如:
#define HEXIFY(s) "\x" s
...
std::cout << HEFIXY("48");
或者:
#define HEXIFY(s) "\x" #s
...
std::cout << HEXIFY(48);
将打印字符H
(十六进制48)。
然而,这两个片段似乎都不起作用。有没有办法只使用宏来实现这个目标?
答案 0 :(得分:2)
#include <iostream>
using namespace std;
#define str(s) #s
#define XHEXIFY(x,y) (str(x##y))
#define HEXIFY(y) XHEXIFY(\x,y)
int main()
{
cout<<HEXIFY(48)<<endl;
return 0;
}