__COUNTER__变量名中
__COUNTER__ in variable name
我看到了这个问题:
如何使用宏在C++中生成随机变量名称?
答案如下:https://stackoverflow.com/a/1675203/551045
我试图在叮当声中实现它。
这是我的声明:
#define TRACE(stream) FuncTrace x#__COUNTER__ (llvm::errs(), "hallo", 1)
我尝试了所有变体x##__COUNTER__; x ## __COUNTER__
等等,但似乎都没有奏效。
这可能是一个叮当虫吗?clang 帮助页面说它有__COUNTER__
宏。
最后,宏我需要这样的东西:
#define TRACE(stream) FuncTrace x#__COUNTER__ (stream, __FUNCTION__, __LINE__)
-
要将两个令牌连接为一个,请使用
##
运算符。#
运算符用于将令牌转换为字符串。 -
x ## __COUNTER__
只会产生x__COUNTER__
.您需要首先完全展开__COUNTER__
。一种可能的方法是添加更多的间接寻址,例如#define YTRACE(x, y) FuncTrace x##y (llvm::errs(), __FUNCTION__, __LINE__) #define XTRACE(x, y) YTRACE(x, y) #define TRACE(x) XTRACE(x, __COUNTER__)
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 在C++中,在给定的相同作用域内声明相同的变量名
- 为什么类名与"::"一起使用在变量名之前?
- 在同级之间继承相同的变量名
- __COUNTER__变量名中
- 按变量名遍历结构