将参数与预定义标记连接起来
Concatenating an argument with a predefined token
我正在定义一个宏,其中我将一个标记作为参数,并将其附加到前缀,如下所示:
Enum::Type var = FULL_NAME(enum1);
应该翻译成:
Enum::Type var = Enum::Type::enum1;
我知道你可以使用##操作符连接两个参数,像这样:
#define glue(a, b) (a ## b)
但是我可以像
那样使用它吗?#define FULL_NAME(name) (Enum::Type ## name)
?
如果不是,正确的方法是什么?
不,##
用于创建令牌。你不需要那个,它不会工作的。
你想要的要简单得多:
#define FULL_NAME(name) (Enum::Type::name)
虽然您可能认为Enum::Type::enum1
是一个名称,但它实际上是五个令牌。您可以在标记之间使用空白或甚至注释来编写它,尽管我不建议这样做,除非作为学习练习:
Enum ::/* the outer namespace */
Type // the inner namespace
:: enum1
相关文章:
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 尝试将 c 字符串数组与分隔符连接起来
- 如何计算图像中每个块的直方图,然后将它们连接起来?
- 如何在 C 宏中将变量字符串与文字字符串连接起来?
- C++ 如何将文字与整数连接起来
- 将QAbstractTableModel与QML TableView连接起来
- 将数字矩阵与 Rcpp 连接起来
- 将两个向量与另一个向量连接起来
- 将 StringVector 与 Rcpp 连接起来
- 使用 occi 库将 c++ 程序与 Oracle 连接起来
- range-v3:将管道范围与分律器连接起来
- 通过C GUI程序将国际象棋引擎连接起来
- 将字符串变量与整数和文本字符串连接起来的 C++ 字符串流
- C++ 将常量字符 * 与字符串连接起来,仅打印常量字符 *
- 将 LPTSTR 与常量字符连接起来 * (Win32 C++)
- 通过将模板参数与字符串连接起来生成C++类型名
- 将QDomNode与QStandardItem连接起来
- 如何将两个字节*(秒块)与运算符连接起来'secblock<T, A>::operator+='
- 如何将Qt动作与函数连接起来
- C++Qt:将TextEdit与Label连接起来