При компиляции С++ с GCC 4.4 или MSVC можно ли заставить компилятор генерировать сообщения, когда функция встроена?
Узнайте, какие функции были встроены
Ответ 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
против
#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
против. просто
0.00 0.00 0.00 1 0.00 0.00 global constructors keyed to main