Когда речь идет о стандарте, ключевое слово inline
имеет ничего , связанного с встраиванием.
Правила (на с ++) в основном:
- Функция, которая не объявлена
inline
, может быть определена только в одном объединении перевода.Его по-прежнему необходимо обрабатывать в каждой единице перевода, где он используется. - Функция, которая объявлена
inline
, должна быть определена в каждой единице перевода, где она используется в odr (ord-use означает, что для вызовафункция или взять указатель, ...).
Таким образом, в стандартных настройках проекта почти всегда правильно следовать следующим двум правилам.Функции, которые определены в заголовочном файле: всегда , которые должны быть объявлены inline
.Функции, определенные в * .cpp-файле, никогда не объявляются inline
.
При этом, я думаю, что компилятор не может сделать какие-либо выводы о том, что программист хотел бы использовать или не использовать ключевое слово inline
.Название ключевого слова является печальным наследием плохого наименования.