写一个宏函数FUNC,FUNC会调用函数func(std::vector)
时间: 2023-07-20 11:31:30 浏览: 69
好的,以下是一个调用函数`func(std::vector)`的宏函数`FUNC`的示例:
```c++
#define FUNC(vec) func(vec)
```
你可以在需要调用`func(std::vector)`函数的地方使用宏函数`FUNC`,它会被展开成`func(vec)`函数的调用,并将传入的`vec`参数作为`func()`函数的参数。例如:
```c++
#include <iostream>
#include <vector>
#define FUNC(vec) func(vec)
void func(std::vector<int> vec)
{
for (auto i : vec)
{
std::cout << i << " ";
}
std::cout << std::endl;
}
int main()
{
std::vector<int> vec = { 1, 2, 3 };
FUNC(vec); // 这里会展开成 func(vec)
return 0;
}
```
输出:
```
1 2 3
```
相关问题
写一个宏函数FUNC,FUNC会调用函数func(std::vector),但是我希望使用FUNC时,可以FUNC({1,2,3})
好的,以下是一个调用函数`func(std::vector)`的宏函数`FUNC`的示例:
```c++
#define FUNC(vec) func(vec)
```
但是,你可以在使用宏函数`FUNC`时,传入一个`initializer_list`类型的参数,这样宏函数`FUNC`会将这个`initializer_list`类型的参数转换成`std::vector`类型的参数,并传入`func(std::vector)`函数中。例如:
```c++
#include <iostream>
#include <vector>
#define FUNC(vec) func({vec})
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
```
写一个宏函数FUNC(...),FUNC会调用函数func(...),但是我希望使用FUNC时,可以FUNC({1,2,3})
好的,以下是一个调用函数`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
```
阅读全文