Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как сообщить компилятору, что аргумент функции никогда не будет равен нулю?

Сообщение Anonymous »

Представьте, что у меня есть такая фиктивная функция C:

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

void Dummy(uint64* dest, const size_t count)
{
for (size_t ii = 0; ii < count; ii += 8) {
*dest++ = (uint64)dest;
}
}
Если вы посмотрите, что создает компилятор, первая инструкция проверит, что значение count не равно нулю.

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

Dummy(unsigned long*, unsigned long):
cbz     x1, .LBB0_7
...
.LBB0_7:
ret

Есть ли атрибут, который я могу поместить в count, чтобы указать, что это значение гарантированно никогда не будет равным нулю и что это ненужное сравнение можно опустить? Есть ли другой стиль кодирования, который я мог бы использовать?
Изменение цикла for на цикл while и другие формы, похоже, не имеет значения. Компиляторы УМНЫ!
И да, меня волнует эта единственная крошечная инструкция. 😊

Подробнее здесь: https://stackoverflow.com/questions/791 ... er-be-zero
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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