Оптимизатор компилятора сложен и будет использовать эвристику, чтобы решить, следует ли встроить код. Есть много факторов, связанных с этим решением, и использование inline
, вероятно, рассматривается. Существуют такие вещи, как MSV C __forceinline
, которые могут придать большее значение этому решению, но все же не гарантируют его.
Но в целом вы можете доверять компилятору принять правильное решение, и функционально для вас не будет никакой разницы. Вы можете использовать рекурсию, взять адрес этой функции, и компилятор заставит ее работать, встроенный или нет.
Самое большое практическое отличие состоит в том, что @arnes сказал:
it разрешает функции, определенные несколько раз в разных единицах перевода, но компилятор ожидает, что все определения одинаковы (в противном случае вызывает неопределенное поведение)