как определить inline функцию?

85
19 мая 2021, 22:00

Как определить встроилась ли функция или у нее свой адрес и реализация, как у не встраимовой функции? Компилятор может игнорировать инструкцию, тем более если я запрашиваю адрес функции. А как определить непонятно, только в ассемблер-код смотреть?

#include <iostream>
void func () {
    std::cout << "func";
}
inline void func2() { func(); }

int main()
{
    std::cout << uint64_t(&func) << " || " << uint64_t(&func2) << std::endl;
    // Пример вывода: 4199872 || 4204384
    return 0;
}
Answer 1

Вот так и определять. С помощью inline, понимая, что компилятор может ее встроить, может не встроить, а может встроить и без всякого inline...

В некоторых компиляторах есть расширения, которые заставляют компилятор прибегнуть ко встраиванию (например, __forceinline в Visual C++), но это уже нестандарт...

READ ALSO
Constexpr значение как non-type template parameter

Constexpr значение как non-type template parameter

Я пробовал сделать static_assert для одного конструктора сразу в std::enable_if, используя msvc

87
Ищу информацию по архитектуре игр серии Worms

Ищу информацию по архитектуре игр серии Worms

Меня интересует, как внутри организованы игры серии Worms

82
Подмена маски номера телефона в зависимости от вводимой цифры

Подмена маски номера телефона в зависимости от вводимой цифры

Всем приветВообщем задачка нужно сделать маску как на https://www

114