gpt4 book ai didi

C++ 预处理器宏和返回语句

转载 作者:行者123 更新时间:2023-11-28 05:57:20 25 4
gpt4 key购买 nike

我想为我的方法声明一个 C++ 预处理器宏

#define RETURN( expr... )

RETURN 将返回表达式 (return expr;) 如果表达式不为空或者只是调用 return (return;) 而没有如果返回类型为 void,则为任何内容。

例如我试着做

#define RETURN( expr... ) if ( expr ) { return expr } return;

但是如果我将它放在我的程序中它期望非 void 返回类型的地方,它会提示 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};
}

除了生成大量样板代码的某种宏工厂之外,我看不到它的实际用途。

关于C++ 预处理器宏和返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com