我可以制作宏像`MACRO(x,Type1 t1,Type2 t2)`

时间:2015-05-31 05:27:21

标签: c++ c++11 macros

我想让我的代码变小。我认为一些宏可以使我的代码变小。
我想制作包含对象声明的宏 有切换案例

    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;

有可能吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下宏:

#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);

正如您所看到的,与您要求的相比,您必须使用更多逗号。至于我,它并没有太大的区别。