… «
хорошим примером, почему оператор ?: следует использовать с осторожностью, по кр. мере в замысловатых выражениях с макросами». Код этот из FreeBSD. Что же, больше нападок, чем на «?:», было, наверное, только на «goto». :-) Я лично считаю, что проблема тут совсем не в «?:», а в
style(9), и это действительно проблема. Посмотрите на оригинал (с «
(
Read more... )
Comments 30
Reply
Reply
int
sblock(sb, wf)
{
if (sb->sb_flags & SB_LOCK) {
if (wf != M_WAITOK)
return EWOULDBLOCK;
return sb_lock(sb);
}
sb->sb_flags |= SB_LOCK;
return 0;
}
что-нибудь такое
Reply
Reply
#define sblock(sb, wf) (((sb)->sb_flags & SB_LOCK) == 0 ? (sb)->sb_flags |= SB_LOCK, 0 : \
(wf) == M_WAITOK ? sb_lock(sb) \
: EWOULDBLOCK)
Reply
Reply
Reply
Reply
Reply
bool b=...;
int i = b?5:7;
?
Reply
Что же, больше нападок, чем на «?:», было, наверное, только на «goto». :-)
…»
Reply
int i=5;
if (...) i+=2;
:)) тоже две строчки
Reply
Reply
Leave a comment