Как определить встроилась ли функция или у нее свой адрес и реализация, как у не встраимовой функции? Компилятор может игнорировать инструкцию, тем более если я запрашиваю адрес функции. А как определить непонятно, только в ассемблер-код смотреть?
#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;
}
Вот так и определять. С помощью inline
, понимая, что компилятор может ее встроить, может не встроить, а может встроить и без всякого inline
...
В некоторых компиляторах есть расширения, которые заставляют компилятор прибегнуть ко встраиванию (например, __forceinline
в Visual C++), но это уже нестандарт...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Я пробовал сделать static_assert для одного конструктора сразу в std::enable_if, используя msvc
Меня интересует, как внутри организованы игры серии Worms
Всем приветВообщем задачка нужно сделать маску как на https://www