写一个宏函数FUNC(...),FUNC会调用函数func(...),但是我希望使用FUNC时,可以FUNC({1,2,3})
时间: 2024-03-09 19:46:27 浏览: 59
好的,以下是一个调用函数`func(...)`的宏函数`FUNC`的示例:
```c++
#define FUNC(...) func(__VA_ARGS__)
```
但是,你可以在使用宏函数`FUNC`时,传入一个`initializer_list`类型的参数,这样宏函数`FUNC`会将这个`initializer_list`类型的参数转换成`std::vector`类型的参数,并传入`func(...)`函数中。例如:
```c++
#include <iostream>
#include <vector>
#define FUNC(...) func({__VA_ARGS__})
void func(std::vector<int> vec)
{
for (auto i : vec)
{
std::cout << i << " ";
}
std::cout << std::endl;
}
int main()
{
FUNC(1, 2, 3); // 这里会展开成 func({1, 2, 3})
return 0;
}
```
输出:
```
1 2 3
```
阅读全文