首先,说说三个名词的基本概念:
1、宏定义:一种简单的发生在编译之前的文本插入替换。
语法: #define p_char char*
注意!不需要分号标识结束
2、typedef:发生在编译期间,用于定义类型别名
语法:typedef char* p_char;
注意!需要分号标识结束
typedef可以用于各种数据结构的别名定义,但是宏定义比起typedef更容易引起危险。详见以下示例:
#include<iostream>
#define a_char char*
typedef char* b_char;
int main()
{
a_char p1,p2; //p1是个char指针,p2是个char变量
b_char p3,p4; //p3,p4都是char指针
return 0;
}
3、内联函数(inline)发生在编译期间
用法:inline用在定义函数时使用
inline ret_val A
{
...
return ...;
}
以上代码发生在程序员想告诉编译器:我定义了返回值为ret_val的函数A!调用函数的时候不要调用它!而是插入函数体的返回值!
具体例子如下(代码转载自https://blog.csdn.net/cpongo3/article/details/93996094):