[英]C++ Preprocessor Macros and Return Statement
我想為我的方法聲明一個C ++預處理器宏
#define RETURN( expr... )
如果表達式不為空,則RETURN
將返回表達式( return expr;
) return;
如果返回類型為void,則僅調用return( return;
)而不返回任何內容。
例如我試圖做
#define RETURN( expr... ) if ( expr ) { return expr } return;
但是,如果我將其放置在期望非空返回類型的程序中,它就會抱怨該返回語句沒有價值,因為只有一個return;
在末尾。 正確的方法是什么? 謝謝。
#define RETURN(...) return __VA_ARGS__
您無需在此處使用可變參數宏,因為它們仍然會變成逗號運算符 。 事實證明,您確實想使用可變參數宏! 感謝@chris,我從沒想過要返回{...}
。
使用它看起來像:
void foo() {
RETURN(); //return ;
}
int bar() {
RETURN(0); //return 0;
}
float RunningOutOfFunctionNames() {
RETURN(0, 'c', 2.0); //return 0, 'c', 2.0;
//AKA return 2.0;
}
std::pair<int, int> ThisOnlyWorksWithVariadicMacros() {
RETURN({1, 2}); //return {1, 2};
}
在某種會產生大量樣板代碼的宏工廠之外,我看不到有什么實際用途。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.