函数的运转方式:
首先来说明函数在计算机当中的底层的运转逻辑。第一点要明确知道的是,函数是处于计算机编写程序四个阶段的第二个阶段(预处理,编译,汇编,链接),处于编译这个阶段运行的。它的作用是,程序编译到函数的位置时,跳转到定义这个函数的地方(注意,这里不是将函数里的东西复制过去),在这个地方是会进行运算处理的。
函数宏的运转方式:
函数宏是计算机编写程序时的第一个阶段,预处理阶段,在这个阶段处理程序时,它并没有对程序进行运算,而是将定义的东西复制到这个程序当中来,在程序当中出现了多少次就复制多少次,只是把函数宏里面的东西复制过去不进行运算。
主要不同点:
从它们的运转方式的不同来看,很明显宏对于函数来说,在有比较多次出现同一数据的程序里,宏所需要的内存空间明显比较大。而函数是定义完了进行跳转,很明显如果有比较多次出现同一数据的程序里,函数的运转效率就不如宏的运转效率高。总结来说,函数是占的内存相对来说比较小,但运转效率不够快。函数宏是,运转效率比较快,但需要的储存空间比较大。
对于宏而言,宏的缺点还体现在它的定义数据上,定义宏并不需要定义一个数的数据类型,可能导致程序出现一定程度上的问题。并且由于函数宏不进行运算的只进行复制的原因,会比较容易导致因为运算优先级出现的问题。