我可以安全地在GCC复合语句表达式中使用返回值吗?在GCC复合语句表达式中调用返回信息
比如我定义宏
#define CHECK_FUNC_RESULT(func) \
({ \
int result = func(); \
if (!result) return; \
result; \
})
,在这种方式中的代码的地方使用它:
int function1()
{
if (some_condition)
return 0;
...
return 1;
}
void function2()
{
if(CHECK_FUNC_RESULT(function1)) {
... to do something
}
}
我可以期望从函数2回(上some_condition ==真)没有任何未定义行为?
请, 你可以说得更详细点吗 ? – Andigor
如果(CHECK_FUNC_RESULT(功能1)){ ...做一些 }其他{ ...做别的事情 } 在这种情况下,否则将不被执行。不看宏观的定义,这并不明显。 否则,如果if条件中存在return语句,我找不到指向未定义行为的任何引用。所以它应该按照你打算工作的方式工作,但是如果其他人看着代码,它可能会令人困惑。 –
但是这个问题的话题呢?这是未定义的行为还是不行? – Andigor