Оказывается, добавления ключевого слова __inline во многих случаях недостаточно для того, чтобы компилятор поместил тело функции прямо в место ее вызова из программы. В таких случаях помогает ключевое слово __forceinline, при появлении которого компилятор "выключает" свой алгоритм оценки эффективности встроенной функции
открываешь что нибудь большое и кросплатформенное, и находишь что то типа такого
/* See if we can use __forceinline or if we need to use __inline instead */
#if OGRE_COMPILER == OGRE_COMPILER_MSVC
# if OGRE_COMP_VER >= 1200
# define FORCEINLINE __forceinline
# endif
#elif defined(__MINGW32__)
# if !defined(FORCEINLINE)
# define FORCEINLINE __inline
# endif
#else
# define FORCEINLINE __inline
#endif
я бы посоветовал просто пролистывать большие проекты, много чего интересного узнаешь =)
>Оказывается, добавления ключевого слова __inline во многих случаях недостаточно для того, чтобы компилятор поместил тело функции прямо в место > ее вызова из программы. В таких случаях помогает ключевое слово __forceinline, при появлении которого компилятор "выключает" свой алгоритм оценки > эффективности встроенной функции
Оказывается, cpp еще можно в exe откомпилировать. Может имеет смысл сначала изучить стандарт C++ и функции компилятора, прежде, чем браться за программирование.
Я конечно и раньше не в восторге был от некоторых подсказок.
Но сейчас какаято опа твориться. Я тоже хочу статус участника:
template<class T>inlineconst T& min(const T& a, const T& b)
{
return a < b ? a : b;
}
template<class T>inlineconst T& max(const T& a, const T& b)
{
return a > b ? a : b;
}