Правило как будто - Википедия - As-if rule
Эта статья нужны дополнительные цитаты для проверка.Январь 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В стандарт для C ++ язык программирования позволяет компиляторы для этого языка применять любые оптимизация[1] преобразование в программу во время компиляции при условии, что такая оптимизация не изменяет «наблюдаемое поведение» программы, как указано в стандарте; в основном это означает, что любые действия, выполняемые программой в своей среде, происходят в указанном порядке. Это правило обычно называют как если бы правило.[2]
Из правила есть три основных исключения. Во-первых, программы, показывающие неопределенное поведение освобождены от уплаты налогов; поскольку наблюдаемое поведение в любом случае четко не определено, любой трансформация действительна. Два других исключения относятся к копированию объектов и называются копировать элизию и оптимизация возвращаемого значения.
Эффект от правила «как если бы» зависит от конкретной реализации компилятора. Например, в Компилятор Microsoft C ++, это приводит к пропуску некоторых оптимизаций, таких как переупорядочивание инструкций вокруг звонков библиотека функции, поскольку такие вызовы могут вызвать ввод, вывод действия или доступ к отмеченным ячейкам памяти летучий, и изменения в порядке изменения наблюдаемого поведения.[3]
Правило «как если бы» не относится к C ++; много других языки программирования, включая C, Ржавчина, Идти, Ocaml и т. д. имеют аналогичное правило, чтобы разрешить оптимизация (особенно встраивание ).
Рекомендации
- ^ «Что мой компилятор сделал для меня за последнее время? Откручивание крышки компилятора » Мэтт Годболт CppCon2017 разговаривать (29 сентября 2017 г.)
- ^ Как будто правило на Cppreference, получено в апреле 2018 г.
- ^ Брайс, Хади (май 2015 г.). «Компиляторы - что каждый программист должен знать об оптимизации компилятора, часть 2». Журнал MSDN. Microsoft.
Этот язык программирования -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |