Подтвердить что ты не робот

Поддерживает ли GCC встроенный С++ без ключевого слова 'inline'?

Помогает ли GCC при компиляции кода на С++ оптимизировать скорость, выбирая встроенные функции, которые не отмечены ключевым словом inline?

4b9b3361

Ответ 1

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

Уровень оптимизации -O2, вложение делается, когда компилятор считает, что это стоит делать (используется эвристика), и если он не увеличит размер кода. При -O3 это делается всякий раз, когда компилятор считает, что это стоит делать, независимо от того, увеличит ли размер кода. Кроме того, на всех уровнях оптимизации (включая оптимизацию), статические функции, которые вызывают только один раз, встраиваются.

Ответ 2

Да, особенно если у вас включен высокий уровень оптимизации.

Существует флаг, который вы можете предоставить компилятору для отключения этого: -fno-inline-functions.

Ответ 3

Если вы используете '-finline-functions' или '-O3', это будет встроенные функции. Вы также можете использовать '-finline_limit = N' для настройки того, сколько он делает.

Ответ 5

Да, это так, хотя оно также генерирует неинтенсивное тело функции для функций static non inline, поскольку это необходимо для вызовов из других единиц перевода.

Для функций inline ошибка не может обеспечить тело функции, если функция используется в какой-либо конкретной единицы перевода, поэтому это не проблема.