#include <stdio.h>
#include <stdlib.h>
int main(void) {
puts( getenv("FOO") ?: "FOO is undefined" );
return 0;
}
GCC и Clang позволяют пропускать второй аргумент тернарного оператора, и в итоге можно делать вот такие штуки. Код выше аналогичен следующему:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char *tmp = getenv("FOO");
if(!tmp)
tmp = "FOO is undefined";
puts(tmp);
return 0;
}
Теперь я вообще не понимаю, как я без этого раньше-то на Си писал!