Ключевое слово inline
- это предложение для компилятора, ничего более.Можно свободно принять это предложение на борт, полностью проигнорировать его или даже солгать вам и сказать, что оно делает это, хотя на самом деле это не так.
Единственный способ заставить код быть встроенным - это написать его.в соответствии.Но даже тогда компилятор может решить, что знает лучше, и принять решение перенести его в другую функцию.У него есть много возможностей для генерации исполняемого кода для вашего конкретного источника, при условии, что он не меняет его семантику.
Современные компиляторы более чем способны генерировать лучший код, чем большинство разработчиков могли бы сделать вручнуюсборка.Я думаю, что ключевое слово inline
должно идти по тому же пути, что и ключевое слово register
.
Если вы видели вывод gcc на его безумном уровне оптимизации, вы поймете почему.Он создал код, о котором я не мог и мечтать, и это заняло у меня много времени, чтобы понять.
Кроме того, проверьте this , какие оптимизации на самом деле имеет gcc,включая большое количество, содержащее текст "inline" или "inlining".