Узнайте, какие функции были встроены

Когда компиляция C++ с GCC 4.4 или MSVC является этим возможный заставить компилятор испускать сообщения, когда функция встраивается?

11
задан Jack Nock 15 July 2010 в 10:19
поделиться

1 ответ

С g++, я не думаю, что вы можете заставить g++ сообщить об этом, но вы можете исследовать полученный бинарник с помощью любого инструмента, который показывает символы, nm например:

#include <iostream>
struct T {
        void print() const;
};
void T::print() const { std::cout << " test\n" ; }
int main()
{
        T t;
        t.print();
}

~ $ g++ -O3  -Wall -Wextra -pedantic -o test test.cc
~ $ nm test | grep print
0000000000400800 t _GLOBAL__I__ZNK1T5printEv
0000000000400830 T _ZNK1T5printEv

vs

#include <iostream>
struct T {
        void print() const { std::cout << " test\n" ; }
};
int main()
{
        T t;
        t.print();
}
~ $ g++ -O3  -Wall -Wextra -pedantic -o test test.cc
~ $ nm test | grep print

(нет вывода от nm во втором случае)

EDIT: Также могут пригодиться профилировщики. gprof показывает на этих двух примерах:

0.00      0.00     0.00        1     0.00     0.00  global constructors keyed to _ZNK1T5printEv
0.00      0.00     0.00        1     0.00     0.00  T::print() const

vs. just

0.00      0.00     0.00        1     0.00     0.00  global constructors keyed to main
2
ответ дан 3 December 2019 в 12:17
поделиться
Другие вопросы по тегам:

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