【发布时间】:2009-06-10 12:54:07
【问题描述】:
考虑一下这个在实际工作之前检查错误的 C 结构:
int function(struct Context *context,struct Connection *conn)
{
int retval;
switch(0)
{
case 0:
retval = BUFFER_INACTIVE;
if(conn->mSocket == -1)
break;
retval = BUFFER_FULL;
/* Is there enough room to add ? */
if((context->mMaxBufferSize - conn->mSendPacketLength) < aPacketLength)
break;
/* Is the send packet buffer half sent? */
if(conn->mSendPacketLength > 0 && conn->mSendPacketPos != conn->mSendPacket)
break;
/* Do some work here */
retval = BUFFER_DONE;
}
/* Do some things before returning */
printf("%d",retval);
return retval;
}
您认为这是可读的吗?使用goto 或堆叠if() 的替代方案会更好吗?
【问题讨论】:
-
我真的不怕 gotos...我对这个结构很抗拒,希望得到一些反馈。
标签: c error-handling goto