> Это нормальный код. Просто на неправильном процессоре он не должен выполниться.Просто эстетикой его кодер на заморачивался и явно написал первое что ему в бошку взбрело.
> только не компилируется.
В каком месте? Ну и интринсики например - таки можно прочекать что они задефайнены. А билдсистема может и переумничать: то что бинарь с AVX2 не отработал на вот конкретно том проце, вовсе не означает что результат компила не валиден или что фичи в компилере принципиально нет. Может это билдхост был, компилящий для кого-то еще? И получится тогда горе от ума - все users обрублены до фичесета buildhost.
> и откуда такой возьмется? Кстати, семантика тоже неверная.
А вон в какой-нибудь хелпер-хидер затолкать чек компилерфич - и он задефайнит что-то такое. Так что мерзко выглядящие трехэтажные штуки будут в своем локальном загончике, в одном месте. А в актуальном коде только #if HAVE_AVX2 какое-нибудь. Понятное даже болвану и не загромождающее код.
Есть такая интересная идея - single source of truth. Если интересно, у Cyan в бложике более подробно расписано - и я нахожу что он имеет некий пойнт. В этом контексте, грубо говоря, удобно когда чек компилерфич случится в ОДНОМ месте а не ПО ВСЕЙ ПЛОЩАДИ СОРЦА. При необходимости чекнуть что-то еще - будет отрихтован 1 хидер в 1 месте, что сделает рефактор или добавление фичи намного более тривиальным занятием, не говоря про отсутствие тех 20 багов когда вы что-то не заметили в той пачке трехэтажных ifdef'ов и дали маху.
>> Ну, и у меня полно проектов которые комплятся от VS6 и GCC 2.x.
> ну это прекрасно, только наверняка окажется что это хеловроты.
Ггг а я целюсь на C99 - и кто его не умеет, ну, тот пролетает. Если за 20 лет компилер C99 платформе не накодили я таки посчитаю ее (полу)трупом. Есть, конечно, всякое, типа PIC12, но оно изначально очень на любителя.
> это копипасты из чужих исходников.
Ну вот там это может быть не когерентно чуть менее чем нихрена.