φ(..)メモメモ gccの3項演算子の拡張メモ

Linuxカーネルのコードを読んでいて?:なんて演算子が使われていて???と思ったのでめも。

gcc拡張機能で3項演算子の拡張としてUsing the GNU Compiler Collection (GCC): Conditionalsなんてのがありました。

以下のようなコードを

z = x ? x : y

このように置き換えることが可能

z = x ?: y

実際使ってみるとこんな感じに。

masami@saga:~$ cat a.c
#include <stdio.h>

int main(int argc, char **argv)
{
        char *p = argc > 1 ? argv[1] : NULL;

        printf("%s\n", p ?: "hoge");

        return 0;
}
masami@saga:~$ ./a.out 
hoge
masami@saga:~$ ./a.out foo
foo

( ´ー`)フゥー...