1 c++ inlining compiler-optimization
当内联参数中的指针的函数被内联时,编译器是否在优化过程中删除了间接?当然,当它有意义..
这是一个明显的例子:
inline void say_hello (person* p) {
std::cout << "hello " << p->name << std::endl;
}
int main () {
person goldorak;
goldorak.name = "Goldorak";
say_hello(&goldorak);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这种情况是微不足道的,但如果编译器确实进行了优化,那么在某些情况下它不会?
额外奖励:我在哪里可以获得编译器进行的一些"基本"优化列表?
Ps:我只是很好奇
我假设是GCC,所以你要找的链接是http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
引用:(这可能不是你得到的)
-findirect-inlining Inline也是由于以前的内联而发现在编译时已知的间接调用.仅当-finline-functions或-finline-small-functions选项打开内联本身时,此选项才有效.
Run Code Online (Sandbox Code Playgroud)Enabled at level -O2.
Visual Studio编译器(包括C++)的等效文档 http://msdn.microsoft.com/en-us/library/k1ack8f1.aspx (您可以按照链接获取更多信息)