您可以在表达式中使用 void 返回函数吗?
Can you use a void returning function in an expression
>附上是我计划在代码中使用的代码片段
void error(const char *text)
{
printf("Error: %sn", text);
}
int isvalid(int stuff)
{
if (stuff < 0)
return (error("Less than zero"), 0);
else
return 1;
}
这是好的还是糟糕的编码?
return (error("Less than zero"), 0)
行在我的编译器中没有报告错误
(Borland C++ V5.0 运行时)
您所做的在语法和语义上都是有效的,因为逗号运算符计算每个子表达式并丢弃除最后1 个之外的所有结果。
但它太不习惯了,很痛。只需写两个语句。您将赢得的唯一奖项是代码混淆。
1 - 您标记了C++,所以当然有一个警告。运算符(包括逗号)可以重载。如果这是一个模板,在模板实例化之前,无法说它是否格式正确。你必须跳过一些箍来修复它。
这是
有效的C(可能是C++),因为它使用逗号运算符。
error("Less than zero"), 0
首先计算error
表达式,丢弃可能具有(它没有)的任何结果,然后计算0
,然后由您的函数return
。
相关文章:
- QNX Momentics: GoogleMock - 返回有价值,在函数中返回 void 错误
- 为什么新表达式可以正确生成指针类型,即使它应该返回 void*?
- 如何声明接受字符串、返回void的闭包的类型
- void *function() 是指向函数的指针还是返回 void* 的函数?
- return 语句,该语句调用在返回 void 的函数中返回 void 的函数
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 分配运算符过载:返回void与返回参考参数
- 为什么平行std :: for_each返回void
- 传递返回 void * 作为参数的函数
- 如何验证 LLVM "ret"指令是否返回 void?
- 返回 void 或对自我的引用
- CRTP和返回void的方法*
- 为什么不允许虚方法返回 void 指针
- 为什么 std::fstream 返回 void 而不是 bool
- 重载运算符 = 返回 void 是否不可能成为复制赋值运算符
- C++:从void函数返回void函数的返回值
- 将返回void的函数传递给接受void的函数
- 返回 void 的模板函数
- 带有值的递归阶乘错误返回语句,在函数中返回 'void' [-fallowive]
- 从方法返回 void 以防止执行