我可以创建像macro (x, Type1 t1, Type2 t2)这样的宏吗?

Can I make macro like `MACRO(x, Type1 t1, Type2 t2)`

本文关键字:t2 t1 macro 创建 我可以 Type1 Type2      更新时间:2023-10-16

我想让我的代码更小。我认为一些宏可以使我的代码更小。
我想创建一个包含对象声明的宏。
有开关箱

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

正如你所看到的,与你所要求的相比,你必须使用更多的逗号。对我来说,这并没有太大的区别。