Как я знаю, была ли функция встроена или нет?

Если я отмечаю какую-либо функцию как встроенную, есть ли способ, которым я могу знать, встраивается ли функция или нет?

21
задан user 7 April 2012 в 02:57
поделиться

3 ответа

С GCC вы можете использовать параметр компилятора -Winline :

  -Winline  Warn if a function can not be inlined and it was declared as inline.

Файл man для gcc продолжается сказать:

  Even with this option, the compiler will not warn about
  failures to inline functions declared in system headers.

  The compiler uses a variety of heuristics to determine whether or
  not to inline a function.  For example, the compiler takes into
  account the size of the function being inlined and the amount of
  inlining that has already been done in the current function.
  Therefore, seemingly insignificant changes in the source program
  can cause the warnings produced by -Winline to appear or disappear.
27
ответ дан 29 November 2019 в 20:35
поделиться

Посмотрите на ассемблер, который генерирует ваш компилятор. Например, при компиляции с g ++:

g++ -S -c foo.c

будет создан файл с именем foo.s, содержащий выходные данные на языке ассемблера. В качестве альтернативы, и еще раз с набором инструментов GCC, используйте objdump:

g++ -c foo.c
objdump -d foo.o

Другие наборы инструментов имеют аналогичные функции.

9
ответ дан 29 November 2019 в 20:35
поделиться

1, Посмотрите на вывод ассемблера
2, почему вас это волнует?

5
ответ дан 29 November 2019 в 20:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: