一 宏定义带来的问题
最后ret的值是0。问题出在编译器在遇到宏时只是进行简单的宏替换。
宏的好处是没有类似于普通函数调用时的系统开销,并且宏定义的参数可以适宜大多数类型的数据。
宏定义也有缺点:
有时会产生不可预料的副作用。
二 用inline定义一个内联函数
C++中的内联函数既具有宏定义的优点,又克服了宏定义的缺点。
在函数名前加上"inline",即为内联函数。
inline void func(int a,int b);
在编译时调用func的地方用函数体进行了替换,所以程序执行时会减少调用开销。
举例:
注意事项:
并非所有函数都需要定义内联函数,一般只会将那些频繁被调用的,并且函数体较小的(只有几条语句)函数定义为内联函数。
内联函数内不允许有循环语句和switch语句,否则按照普通函数来处理。