#include "iostream"
#include "string"
using namespace std;
#define AA(bb) \
string(::##bb);
int main (int argc, char *argv[])
{
AA(aa);
}
这给了我一堆错误,但我试图理解这个错误:
pre.cpp:11:1:错误:粘贴“::”和“aa”没有提供有效的预处理令牌
有什么想法吗?
答案 0 :(得分:2)
删除##字符,因为在此上下文中不允许这些字符。 ##是连接位来生成一个令牌,但是::应该是一个令牌,而bb应该是另一个独立的令牌。
答案 1 :(得分:2)
::
已经是一个单独的令牌,您显示的代码不需要##
令牌粘贴运算符。
答案 2 :(得分:1)
由于范围中没有符号aa
,因此您的代码毫无意义。也许你试图将参数字符串化为宏?如果是这样,你想要的是:
#define AA(bb) string(#bb)
然后,这会将AA(aa)
转换为string("aa")