Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ `return_if(cond,val)`不使用宏_C++_Gcc - Fatal编程技术网

C++ `return_if(cond,val)`不使用宏

C++ `return_if(cond,val)`不使用宏,c++,gcc,C++,Gcc,我想创建一个return\u if(cond,val),而不使用宏,用于非静态成员函数。它应该相当于 { //do some stuff on non-static data members here if (cond) return val; //and don't return otherwise } 我不介意使用GCC扩展。它会经常出现在代码中,所以我想要一个简洁的东西。你不能。任何不是宏(您已经排除)或新关键字(您无法创建)的机器都必须有自己的功能范围 即使你可以,你也

我想创建一个
return\u if(cond,val)
,而不使用宏,用于非静态成员函数。它应该相当于

{
    //do some stuff on non-static data members here
    if (cond) return val; //and don't return otherwise
}

我不介意使用GCC扩展。它会经常出现在代码中,所以我想要一个简洁的东西。

你不能。任何不是宏(您已经排除)或新关键字(您无法创建)的机器都必须有自己的功能范围

即使你可以,你也不应该。就像其他人一样,使用传统的、被广泛理解的、正常的方式:

if (cond)
{
   return val;
}

如果您的函数有大量无法管理的分支和
return
点,也许是时候重新审视函数的设计了。

如果(cond)return val?通过执行
return\u if(cond,val),您并没有真正保存任何输入如果
cond
为false,函数将返回什么?也许你想要
if(cond)返回val
是执行此操作的清晰且惯用的方法。函数调用导致调用站点无法继续的唯一方法是终止或抛出。Terminate显然在这里不起作用,而且您肯定不想开始为基本流控制使用异常,只是为了主观地美化函数调用。