Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

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

#cpp #функции #inline


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

#include 

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;
}

    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий