In the Android open-source qemu code I ran across this line of code:
machine->max_cpus = machine->max_cpus ?: 1; /* Default to UP */
Is this just a confusing way of saying:
if (machine->max_cpus) {
; //do nothing
} else {
machine->max_cpus = 1;
}
If so, wouldn’t it be clearer as:
if (machine->max_cpus == 0) machine->max_cpus = 1;
Interestingly, this compiles and works fine with gcc, but doesn’t compile on http://www.comeaucomputing.com/tryitout/ .
This is permitted in GNU as an obscure extension to C
As you can probably guess, avoiding this is recommended for readability and portability reasons. I’m honestly surprised to see such a grammar-incompatible extension to C.