我可以创建像macro (x, Type1 t1, Type2 t2)这样的宏吗?
Can I make macro like `MACRO(x, Type1 t1, Type2 t2)`
我想让我的代码更小。我认为一些宏可以使我的代码更小。
我想创建一个包含对象声明的宏。
有开关箱
case SIGN_UP:
{
std::string userName;
std::string password
getArgs(args, userName, password);
sv.signUp(userName, password);
}
break;
case SIGN_IN:
{
std::string userName;
std::string password
getArgs(args, userName, password);
sv.signIn(userName, password);
}
break;
case SOMETHING:
{
std::string s;
int i;
getArgs(args, s, i);
sv.something(s, i);
}
break;
我想创建一个宏,使这段代码像
case SIGN_UP:
GET_ARGS(args, std::string userName, std::string password);
sv.signUp(userName, password);
break;
case SIGN_IN:
GET_ARGS(args, std::string userName, std::string password);
sv.signIn(userName, password);
break;
case SOMETHING:
GET_ARGS(args, std::string s, int i);
sv.something(s, i);
break;
有可能吗?
可以使用以下宏:
#define GET_ARGS(args, firstType, firstName, secondType, secondName)
firstType firstName;
secondType secondName;
getArgs(args, firstName, secondName);
不完全像你要求的那样-需要多写一点:
GET_ARGS(args, std::string, name, std::string, password);
正如你所看到的,与你所要求的相比,你必须使用更多的逗号。对我来说,这并没有太大的区别。
相关文章:
- 什么是自动 t1=std::make_tuple(case1==case2,整数)的值
- 为什么当为T2抛出bad_alloc异常时,此代码中会发生内存泄漏
- <T> 从类型对象创建类型<T1>对象的构造函数
- 为 map<T1、T2> 迭代器创建模板函数
- <T2> <T1>当 T2 是 C++ 中 T1 的子类时,如何使用向量代替向量?
- 无法编译 T1 架构和仿真建模工具
- C++类型特征以在 T1 和 T2 之间进行选择
- 如何遍历两对 STL 集中的所有元素<对<t1,t2>,pair<t1,t2>>?
- 如果 T1 和 T2 有,std::p air<T1,T2>不应该有微不足道的默认构造函数吗?
- 为什么不支持从模板<类型名 T1、类型名 T2> 到模板<类型名 T1、int i> 的类专用化
- 确定与 std::function<R(T1,T2)兼容的函数类型集的规则>?
- 将元素从 std::vector 移动到 std::<T1>vector<std::p air<T1,T2>>
- 是否可以将默认构造函数设置为"std::map<T1,T2>"值?
- std::map<t1, t2>::erase(迭代器位置)的工作?
- 如何获取 std::hash_set<pair<T1、T2>> 进行编译和运行
- C++是否提供与 pair<T1、T2> 相当的"triple"模板?
- 为什么没有 bool std::operator==(T1* a, std::shared_ptr b) 的重载<T2>?
- 在模板<模板<class>类T1,类T2>中,是什么意思<class>?
- 正在强制转换std::pair
const&T1 const, T2>const&安全的 - 我可以创建像macro (x, Type1 t1, Type2 t2)这样的宏吗?