Как дать C Compiler Freedom о возвратной стоимостиLinux

Ответить
Anonymous
 Как дать C Compiler Freedom о возвратной стоимости

Сообщение Anonymous »

Скажи, что у меня есть следующая функция c: < /p>

Код: Выделить всё

i64 my_comparator1(i64 x, i64 y)
{
if (x > y) { return 1; }
if (x < y) { return -1; }
return 0;
}
< /code>
Если я узнаю что -то о аргументах, которые компилятор не знает, я могу использовать __builtin_unreachable: < /p>
i64 my_comparator2(i64 x, i64 y)
{
if (!((x = -100)) __builtin_unreachable();
if (!((y = -100)) __builtin_unreachable();
if (x > y) { return 1; }
if (x < y) { return -1; }
return 0;
}
Теперь я хочу передать компилятору, что только знак возвращаемого значения важен, поэтому она действительна для преобразования программы в эту (подписанную над/недооцененный уже ub):

Код: Выделить всё

i64 my_comparator(i64 x, i64 y) { return x - y; }
Конечно, абонент может легко сказать разницу, но есть ли способ объяснить компилятору, что я в порядке с ним?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... turn-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»