- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看到这个问题:
How to generate random variable names in C++ using macros?
回答如下:https://stackoverflow.com/a/1675203/551045
而且我尝试在 clang 中实现它。
这是我的声明:
#define TRACE(stream) FuncTrace x#__COUNTER__ (llvm::errs(), "hallo", 1)
我尝试了所有变体 x##__COUNTER__; x ## __COUNTER__
等等,但似乎都不起作用。
这可能是 clang 错误吗? clang help页面说它有 __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++ - 变量名中的 __COUNTER__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12690639/
如果我们使用 __COUNTER__在两个不同的源文件中,该值将重置为零。是否可以制作 __COUNTER__范围全局? 文件:file1.c int x=__COUNTER__; int y=__C
我看到这个问题: How to generate random variable names in C++ using macros? 回答如下:https://stackoverflow.com/a
我的电脑上安装了两个版本的 C++ 编译器。其中一个可以识别 __COUNTER__ 宏,而另一个则不能。在做了一些研究以使程序在两者中编译之后,我还没有遇到 __COUNTER__ 的宏定义。这是编
我正在做一些模板元编程,大部分只是编写我自己的编译时间列表,但我也有一些预处理器魔法,如果可能的话,我想用它来使事情变得更容易。 我想做的是创建仿函数的编译时列表。该部分已完成,但用于简化创建(并添加
我有一段代码使用 __COUNTER__ 宏来为变量生成唯一的名称。 此代码可移植吗?我知道 GCC 和 MSVS 支持它。其他编译器呢?宏是由标准定义的吗(据我所知,在 C++14 之前它不是)。
我正在尝试使用 __COUNTER__ 宏在我的代码中生成唯一的变量名。但是宏似乎不起作用。我可能以错误的方式使用它。请就我做错的地方向我提供指示或建议。 #define DUMB_MACRO() h
我想生成对编写单元测试用例有用的不同命名函数。我想这样做基本上是为了给每个单元测试用例赋予唯一的名称。 我正在使用 google 测试框架 编写单元测试用例。我必须使用 TEST_Macro 来编写单
我在玩预处理器和 c。尝试实现我自己的事件和层次结构系统。但是我遇到了一个问题。我正在尝试静态定义可以初始化的“模块”,以及一些预先静态定义的事件。对于我使用的事件,COUNTER 效果很好。但我不想
我想对 __COUNTER__ 进行字符串化并将其打印为字符串而不是整数,这可能吗? printf("%s\n", #__COUNTER__); 下面的方法我都试过了,还是不行 hello.c:6:1
我有一个执行类似于以下操作的宏: #define MAKE_VALS(...) \ int val1 = 0; \ int val2 = 0; \ : if(val1
我正在尝试编写一个宏,它将每个源文件仅扩展一次 __COUNTER__ 宏。我完全理解宏是如何处理它们的扩展的,但我在这个方面遇到了困难。我想在文件顶部扩展一次 __COUNTER__ 宏,然后对该定
我正在将一个项目从 Linux 迁移到 Xcode,我遇到了“版本”问题。 我在编译时需要一个唯一标识符来处理我的动态内容,在 linux 上我使用的是 __ COUNTER__ 预处理器,但似乎 X
是否可以在头文件的开头重置 __COUNTER__ 宏,使其在头文件中的计算在多个编译单元上保持一致? 最佳答案 枚举怎么样? enum { COUNTER_BASE = __COUNTER__ };
我目前在我的 C 库代码中使用 __COUNTER__ 宏来生成唯一的整数标识符。它运行良好,但我看到两个问题: 它不属于任何 C 或 C++ 标准。 也使用 __COUNTER__ 的独立代码可能会
__COUNTER__ 符号由 VC++ 提供和 GCC,每次使用都会给出一个递增的非负整数值。 我有兴趣了解是否有人使用过它,以及它是否值得标准化? 最佳答案 __COUNTER__ 在您需要唯一名
这个问题在这里已经有了答案: Does C++ support compile-time counters? (11 个答案) 关闭 6 年前。 我有一组 C++ 类,每个类都必须声明一个唯一的顺序
我需要在编译时在整个代码中生成一系列序列号。我以这样的方式尝试了“__COUNTER__”: void test1() { printf("test1(): Counter = %d\n", __
在this presentation 在 00:19:00 左右,Andrei Alexandrescu 解释了他的 SCOPE_EXIT 宏的实现。他在堆栈上创建了一个 ScopeGuard 对象,
我遇到以下关于 __COUNTER__ 的词: Care must be taken to ensure that __COUNTER__ is not expanded prior to inclu
首先,让我从我正在尝试做的事情开始。我正在开发一个库,它可以更轻松地将 Python 解释器嵌入到 C++ 代码中,并且我想利用一些 C++11 功能。我大量使用 std::functions,这是一
我是一名优秀的程序员,十分优秀!