Войти
ПрограммированиеПодсказкиОбщееОбщее

inline функции

Автор:

Оказывается, добавления ключевого слова __inline во многих случаях недостаточно для того, чтобы компилятор поместил тело функции прямо в место ее вызова из программы. В таких случаях помогает ключевое слово __forceinline, при появлении которого компилятор "выключает" свой алгоритм оценки эффективности встроенной функции

#C++, #inline

12 октября 2009

Комментарии [16]

Страницы: 1 2 Следующая »
#1
22:48, 13 окт 2009

Это к Managed C++ или  к Native C++ относится?

#2
23:02, 13 окт 2009

facepalme.jpg

Ждем советов типа: "а вы знали что слово struct в C++ то же самое, что class с квалификатором доступа public по-умолчанию".

#3
23:07, 13 окт 2009

Я, кстати, не знал о __forceinline - подсказка сподвигла покопать и поизучать

#4
23:11, 13 окт 2009

Алсо, хочется добавить о том что это MS-specific, на GCC используется __attribute__((always_inline)). А что используется в ICC?

#5
23:34, 13 окт 2009

открываешь что нибудь большое и кросплатформенное, и находишь что то типа такого

/* 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


я бы посоветовал просто пролистывать большие проекты, много чего интересного узнаешь =)

#6
0:35, 14 окт 2009

KpeHDeJIb
Плюсую.

Только хотел написать, что статей много развелось.

#7
7:43, 14 окт 2009

>Оказывается, добавления ключевого слова __inline во многих случаях недостаточно для того, чтобы компилятор поместил тело функции прямо в место
> ее вызова из программы. В таких случаях помогает ключевое слово __forceinline, при появлении которого компилятор "выключает" свой алгоритм оценки
> эффективности встроенной функции

Оказывается, cpp еще можно в exe откомпилировать. Может имеет смысл сначала изучить стандарт C++ и функции компилятора, прежде, чем браться за программирование.

#8
8:24, 14 окт 2009

Я конечно и раньше не в восторге был от некоторых подсказок.
Но сейчас какаято опа твориться. Я тоже хочу статус участника:

template <class T> 
inline const T& min(const T& a, const T& b)
{
  return a < b ? a : b;
}

template <class T> 
inline const T& max(const T& a, const T& b)
{
  return a > b ? a : b;
}

Через какое время я его получу?
[/сарказм]

#9
9:21, 14 окт 2009

alex_r
Это в стандартной библиотеке уже есть.

#10
15:36, 14 окт 2009

2alex_r

у тебя уже нашел косяк =) если туда передать NaN флоат или дабл, и заюзать при сортировке, то у тебя будет бесконеынй цикл

#11
15:46, 14 окт 2009

my.name
и часто вы сравниваете два NaN float  при сортировке ? )

#12
16:20, 14 окт 2009

Кстати в тему
inline vs __forceinline.

#13
17:15, 14 окт 2009

Andrey
> Кстати в тему

а они не сказали в каких местах ставили inline и forceline ?

#14
17:37, 14 окт 2009

имхо, вредная подсказка.

Страницы: 1 2 Следующая »
ПрограммированиеПодсказкиОбщееОбщее

Тема в архиве.