Расширение ({...})
является расширением cc и называется выражением оператора . Это утверждение, которое может использовать выражения. Последний оператор, использованный внутри выражения оператора, является значением выражения.
Следующее возвращает true:
return ({NULL;}) == NULL;
Как работает этот макрос,
Макрос proc_create
с любыми 4 аргументами расширяется до ({NULL;})
.
, поскольку его расширение равно NULL?
Расширение не NULL
, но символы ({NULL;})
. Расширение этого макроса - это выражение, которое оценивается как NULL
.