2015-05-31 45 views
0

我想使我的代碼更小。我認爲一些宏可以使我的代碼更小。
我想使宏包含對象聲明。
有開關的情況下我可以像宏`MACRO(X,類型1 T1,T2 2型)`

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; 

這可能嗎?

回答

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

正如你所看到的,你必須使用更多的逗號比較你所要求的。儘管如此,對我來說它並沒有太大的區別。

相關問題