内联函数在编译好后进行链接时,相当于直接把内联函数内的语句写到调用内联函数的地方。跟宏有点相似。准确地说,一般的函数,程序运行后,指令调进内存后,这一个函数就固定在内存的某个位置上,程序中多次调用这个函数时,cpu就跳转到函数的同一个内存开始位置执行指令,而且跳转前cpu要先把当前运行的临时数据入栈保存,还把调用函数返回后的下一个指令的执行位置入栈,而函数返回后,cpu又要从堆栈取出跟着要继续执行的指令的位置,还有之前使用的临时数据也得出栈继续使用。所以多次返复调用函数时,cpu就用去很多的时间多次返复地进行入栈、出栈的动作,而这些动作有时有些步骤是完全无须执行也不会cpu正常运行程序的,如一些简单的算术运算、逻辑运算、赋值等。而内联函数在内存中是不存在的,因为它已经不是一个函数,而是成为一组指令插入到调用它的地方。cpu运行时无须跳转执行位置,也无须为了让出内部寄存器来保存临时数据,直接分配新的临时数据空间。同时也因为这个原因,执行内容的指令会重复出现在内存中的多个位置,所以程序就会大些,但运行速度会快些。至于如何取舍,就看实际需要吧。还得提醒一下,即使你把函数定义为内联函数,它也不一定就是内联的,编译器的代码优化参数能影响到它的编译结果。据说VC中debug模式的默认配置项会使所有内联函数视为一般函数来进行编译处理。