在3.0.4 Linux内核中,mm/filemap.c包含以下代码行:
retval = retval ?: desc.error;我曾尝试用gcc -Wall编译一个类似的最小测试用例,没有得到任何警告;其行为似乎与以下行为相同:
retval = retval ? retval : desc.error;看看C99标准,我想不出是什么正式地描述了这种行为。为什么这是可以的?
发布于 2011-10-19 06:49:14
这是gcc的分机。x ?: y等同于x ? x : y -参见http://gcc.gnu.org/onlinedocs/gcc/Conditionals.html#Conditionals。
是的,我也认为这是邪恶的。
https://stackoverflow.com/questions/7814694
复制相似问题