首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在三元操作中使用"return“作为宏?

如何在三元操作中使用"return“作为宏?
EN

Stack Overflow用户
提问于 2019-06-12 15:17:24
回答 2查看 155关注 0票数 0

我有一个c++代码,如下所示:

代码语言:javascript
复制
#define xxx return

int main()
{
    xxx 0;
}

它的工作方式与预期一致。

现在我像这样修改代码:

代码语言:javascript
复制
#define xxx return
#define TEST(X) ((X) == (false) ? (xxx 1) : ())

int main()
{
    bool b = false;
    TEST(b);
    return 0;
}

一言以蔽之,如果bfalse,我想要return 1。但是我得到了一个错误:

代码语言:javascript
复制
error: expected primary-expression before ‘return’
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-12 15:21:08

return是一个语句,而不是一个表达式。并且?:的所有三个操作数只能是表达式。return关键字不能出现在它们中的任何一个中,无论是否从宏展开。

在您的特定示例中工作的宏将是一个简单的

代码语言:javascript
复制
#define TEST(X) if((X) == (false)) xxx 1

不过,如果你摆弄宏的话,要小心dangling else problem,并用它来验证上面的代码。

票数 5
EN

Stack Overflow用户

发布于 2019-06-12 15:21:52

在三元运算符中不能有return语句。你需要使用一个普通的if。

代码语言:javascript
复制
#define TEST(X) if ((X)  == false) return 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56556601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档