Some time ago I met confusing C ternary operator usage
return timeout ?: 1;
It turned out to be a GNU "Conditionals with Omitted Operands"
C extension. The list of "Extensions to the C Language Family" can be found here.
This page is worth reading. For example, getting
the address of a label defined in the current function (or a containing
function) with the unary operator `&&'. The value has type void *
. This value
is a constant and can be used wherever a constant of that type is valid.
For example:
void *ptr;
/* ... */
ptr = &&foo;
To use these values, you need to be able to jump to one. This is done with
the computed goto statement, goto *
exp;
.
For example, goto *ptr;
No comments:
Post a Comment