_Вашему вниманию предлагается перевод недавнего письма по поводу неоднозначной идеи из рассылки Linux Kernel Mailing List, вызвавшей традиционную реакцию Линуса Торвальдса. Необходимые для понимания [пояснения][1] предоставлены в конце поста._
> **Отправитель:** Мартин Уэкер
> **Дата:** Tue, 20 Mar 2018 22:13:35 +0000
> **Тема:** Обнаружение целочисленных константных выражений в макросе
Здравствуй Линус,
У меня появилась идея:
Тест для целочисленных константных выражений, который возвращает само [целочисленное константное выражение][2] (_integer constant expression_, _ICE_), которое должно подходить для передачи в `[__builtin_choose_expr][3]`, и выглядит следующим образом:
#define ICE_P(x) (sizeof(int) == sizeof(*(1 ? ((void*)((x) * 0l)) : (int*)1)))
Кстати, в этом выражении само `x` не вычисляется в _gcc_, хотя это и не гарантируется стандартом (я не проверял этот факт в старых версиях _gcc_.)
> **Отправитель:** Линус Торвальдс <>
> **Дата:** Tue, 20 Mar 2018 16:08:30 -0700
> **Тема:** Re: Обнаружение целочисленных константных выражений в макросе
> On Tue, Mar 20, 2018 at 3:13 PM, Мартин Уэкер
> <Martin.Uecker@med.uni-goettingen.de> написал:
> У меня появилась идея:
Нет, это не «идея».
Это либо работа гения, либо напрочь больного на голову.
До конца пока не уверен, поэтому не могу сказать с точностью.
[Читать дальше →][6]
[1]:
https://www.reddit.com/r/programming/comments/87wnxw/linus_torvalds_that_is_either_genius_or_a/
[2]:
https://gustedt.wordpress.com/2010/12/27/constant-expressions/
[3]:
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
[4]:
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
[5]:
https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
[6]:
https://habrahabr.ru/post/352322/?utm_source=habrahabr&utm_medium=rss&utm_campaign=352322#habracut