#cpp #функции #inline
Как определить встроилась ли функция или у нее свой адрес и реализация, как у не встраимовой функции? Компилятор может игнорировать инструкцию, тем более если я запрашиваю адрес функции. А как определить непонятно, только в ассемблер-код смотреть? #includevoid func () { std::cout << "func"; } inline void func2() { func(); } int main() { std::cout << uint64_t(&func) << " || " << uint64_t(&func2) << std::endl; // Пример вывода: 4199872 || 4204384 return 0; }
Ответы
Ответ 1
Вот так и определять. С помощью inline, понимая, что компилятор может ее встроить, может не встроить, а может встроить и без всякого inline... В некоторых компиляторах есть расширения, которые заставляют компилятор прибегнуть ко встраиванию (например, __forceinline в Visual C++), но это уже нестандарт...
Комментариев нет:
Отправить комментарий