Позиция правила AUTOSAR A5-0-4 в отношении арифметики указателейC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Позиция правила AUTOSAR A5-0-4 в отношении арифметики указателей

Сообщение Anonymous »


Правило AUTOSAR A5-0-4 гласит

Арифметика указателей не должна использоваться с указателями на неконечные значения. занятия.

Это дает следующее обоснование:

Арифметика указателей корректно определена только в том случае, если тип указателя указатель равен типу элемента массива, на который он указывает, в противном случае поведение неопределенно. Это свойство может быть гарантировано только в том случае, если Операнд-указатель — это указатель на тип, не относящийся к классу, или указатель на конечный тип. тип класса.

Затем приводятся несколько примеров соблюдения и несоблюдения требований. Одно из несоответствий меня озадачило:

void Foo(Base *start, size_t len) { // Несовместимо: арифметика указателя для неконечного типа указателя for (Base *iter = start; iter != start + len; ++iter) { итер->Сделать(); } } Как бы маловероятно, что кто-то стал бы использовать простой C-массив для хранения полиморфных указателей, он заложен в самой структуре языка C++.

Поэтому я интуитивно чувствую, что в приведенном выше коде нет ничего плохого.

Возможно, я ошибаюсь в этом убеждении. Или, возможно, я совершенно упускаю суть, которую это правило AUTOSAR пытается донести до читателя.

Может ли кто-нибудь объяснить это лучше, чем в документе AUTOSAR?

См. также правило AUTOSAR A5-0-4, в котором приведен полный код, использованный в примере.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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