gpt4 book ai didi

c++ - 变量名中的 __COUNTER__

转载 作者:行者123 更新时间:2023-11-30 00:37:51 24 4
gpt4 key购买 nike

我看到这个问题:

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__)

最佳答案

  1. 要将两个标记连接成一个,您可以使用 ## 运算符。 # 运算符用于将标记转换为字符串。

  2. 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com