Pravidlo jako kdyby - As-if rule - Wikipedia
tento článek potřebuje další citace pro ověření.Leden 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
The Standard pro C ++ programovací jazyk umožňuje překladače pro tento jazyk použít jakýkoli optimalizace[1] transformace na program během kompilace za předpokladu, že takové optimalizace nezmění „pozorovatelné chování“ programu, jak je uvedeno ve standardu; to většinou znamená, že jakékoli akce, které program provádí ve svém prostředí, se vyskytují v zadaném pořadí. Toto pravidlo se běžně označuje jako pravidlo jako kdyby.[2]
Pravidlo má tři hlavní výjimky. Prvním je vystavování programů nedefinované chování jsou osvobozeny; protože pozorovatelné chování není stejně dobře definováno, žádný transformace je platná. Další dvě výjimky se týkají kopírování objektů a jsou volány kopírování vyřazení a optimalizace návratové hodnoty.
Účinek pravidla jako-li závisí na konkrétní implementaci kompilátoru. Jako příklad lze uvést v Překladač Microsoft C ++, způsobí vynechání určitých optimalizací jako např přeuspořádání instrukcí kolem hovorů na knihovna funkce, protože taková volání mohou způsobit vstup výstup akce nebo přístupy do paměťových míst označených nestálýa změny v pořadí těchto změn pozorovatelného chování.[3]
Pravidlo as-if není specifické pro C ++; Mnoho jiných programovací jazyky, počítaje v to C, Rez, Jít, Ocaml, atd. mají podobné pravidlo, povolit optimalizace (zejména vložka ).
Reference
- ^ "Co pro mě v poslední době udělal můj překladač?" Odpojení víka kompilátoru “ Matt Godbolt CppCon2017 mluvit (29. září 2017)
- ^ Pravidlo jako kdyby na Cppreference, získaný v dubnu 2018
- ^ Brais, Hadi (květen 2015). „Překladače - co by měl každý programátor vědět o optimalizaci kompilátoru, část 2“. MSDN Magazine. Microsoft.
Tento programovací jazyk související článek je a pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |