As several others have said, this is a GCC extension, not part of any standard. You’ll get a warning for it if you use the -pedantic
switch.
The point of this extension is not really visible in this case, but imagine if instead it was
retval = foo() ?: desc.error;
With the extension, foo()
is called only once. Without it, you have to introduce a temporary variable to avoid calling foo()
twice.