【发布时间】:2016-01-19 06:54:55
【问题描述】:
我遇到了其他人编写的这段代码。这种条件运算符的用法是推荐的还是常用的?我觉得它的可维护性较差 - 还是只有我一个人?有没有其他的写法?
exp_rsp_status = req.security_violation ? (dis_prot_viol_rsp && is_mstr) ?
uvc_pkg::MRSP_OKAY : uvc_pkg::MRSP_PROTVIOL : req.slv_req.size() ?
((is_mst_abort_rsp && dis_mst_abort_rsp) ||
((req.slv_req[0].get_rsp_status()==uvc_pkg::MRSP_PROTVIOL) && dis_prot_viol_rsp) ||
(is_mst_abort_rsp && req.is_pci_config_req() && dis_pcicfg_mst_abort_rsp)) ?
uvc_pkg::MRSP_OKAY : req.slv_req[0].get_rsp_status() : uvc_pkg::MRSP_OKAY;
【问题讨论】:
-
exp_rsp_status默认可以构造和赋值吗? -
你的问题集中在三元运算符上,而真正的问题是它太复杂了,不管是不是三元的。
-
我在这里删除了 [bad-code] 标签,因为它是一个“元标签”——一个描述问题是的标签,而不是它的内容。如果您想讨论它,您可以考虑询问on meta。谢谢!
-
不断回滚您不同意的编辑是没有建设性的。如果您想讨论编辑是否应该保留或离开,您可以在Meta Stack Overflow 上进行讨论,而不是进行拉锯战。
标签: c++ ternary-operator conditional-operator