Будет ли исключение C ++ останавливает функцию от inline? - PullRequest
12 голосов
/ 21 сентября 2011

Предположим, у меня есть очень простая функция, и я ожидаю, что компилятор ее встроит. Но мне может потребоваться выдать исключение при просмотре недопустимого ввода, не остановит ли компилятор функцию?

Ответы [ 3 ]

10 голосов
/ 21 сентября 2011

Компилятор может отказать в работе по любой причине.В gcc перечислены причины, по которым может не включать функцию , но исключение не входит в их число.Кроме того, опция -Winline заставит компилятор выдавать предупреждение, если он не может встроить функцию, которую вы пометили как встроенную.Вы можете попробовать это и посмотреть, делаете ли вы что-нибудь для предотвращения встраивания.

6 голосов
/ 21 сентября 2011

Это вполне разумно и допустимо для компилятора встроить функцию, которая выдает.

0 голосов
/ 12 ноября 2017

Я только что столкнулся с этой ситуацией с MSVC версии 19. Функция, которая выдает исключение, не будет встроена при компиляции для x86. Если я заменю throw на exit(1) или если я скомпилирую для x86-64, он будет просто встроен.

...