C++ #define assign_token(case_label)
时间: 2023-10-10 13:04:35 浏览: 228
标记Token实例
4星 · 用户满意度95%
这个代码片段定义了一个宏 `assign_token`,它的定义中包含了另一个宏 `_token` 和 `case_label`,具体的作用如下:
当使用 `assign_token` 宏时,会将 `case_label` 作为参数传递给 `_token` 宏,然后将 `_token` 宏的结果作为字符串字面量,用于给变量或变量的成员赋值。这个宏可以用于 switch-case 语句中,用于给不同的变量或变量的成员赋不同的字符串字面量值。
举个例子:
```c++
#include <iostream>
#define _token(x) #x
#define assign_token(x) _token(x)
int main()
{
std::string str1;
std::string str2;
int case_label = 1;
switch (case_label)
{
case 1:
str1 = assign_token(case_label); // 相当于 str1 = "1"
break;
case 2:
str2 = assign_token(case_label); // 相当于 str2 = "2"
break;
default:
break;
}
std::cout << "str1 = " << str1 << std::endl; // 输出:str1 = 1
std::cout << "str2 = " << str2 << std::endl; // 输出:str2 =
return 0;
}
```
在上面的例子中,当 case_label 的值是 1 时,会执行 `str1 = assign_token(case_label);`,这相当于执行 `str1 = "1";`。所以最后输出的结果是 `str1 = 1`。当 case_label 的值是 2 时,会执行 `str2 = assign_token(case_label);`,这相当于执行 `str2 = "2";`,所以最后输出的结果是 `str2 = `(空字符串)。
阅读全文