使用GCC 4.4或MSVC编译C ++时,是否有可能让编译器在内联函数时发出消息?
答案 0 :(得分:2)
使用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的输出)
编辑: 此外,分析器可能是有用的。 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。刚
0.00 0.00 0.00 1 0.00 0.00 global constructors keyed to main