На каком этапе C компиляции программы встроенная функция вставляется в функцию вызова - PullRequest
0 голосов
/ 30 апреля 2020

В случае расширения макроса вставка происходит на этапе предварительной обработки.

Но в случае inline, на каком этапе компиляции, компилятор решает, вставлять его или вызывать как обычную функцию.

На каком этапе он вставляется, если выбран для вставки.

1 Ответ

0 голосов
/ 30 апреля 2020

«Этапы компиляции» на самом деле не стандартизированный термин. Язык C определяет только то, что называется фазы перевода , в которых подробно описываются различные этапы предварительной обработки, но очень расплывчато в отношении всей работы, выполняемой после предварительной обработки. Он обобщается стандартом в качестве завершающей фазы перевода:

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

Это включает оптимизацию и все остальное, что необходимо сделать перед созданием исполняемого двоичного файла. Все детали того, как и когда это сделано, оставляются на усмотрение компилятора, чтобы они могли решить, как им удобно.

...