#define
理解:"define" 关键词,只是“替换”功能;本身不附带“计算规则”属性,因此,执行替换功能后,需要考虑所在环境的计算规则,整句代码有效性才算完整(*)。
#define用法(*)
例子:
#include <stdio.h>
#define f(x) x*x
int main(void)
{
int a=6, b=2, c;
c = f(a) / f(b);
printf("%d\n", c);
return 0;
}
以下程序的输出结果是: 36。
typedef 返回类型(*新类型)(参数表)
例如:typedef void (*system_irq_handler_t) (unsigned int giccIar, void *param);
1、在这里我们声明了一种新的类型-- systme_irq_handler_t
2、这个类型是一类函数的指针
3、哪一类函数呢? 返回值为void,两个参数分别为 unsigned int、void *p 类型的函数
这个玩意有什么用呢?
:就是当我们需要创建一系列某种类型的函数时,这个用法就很容易了!应用场景:比如说根据中断号的不同创建一系列的中断函数时,就可以将中断函数的类型提取出来,将其声明为一种新类型。作用/优势:这样我们就可以像使用常规变量(比如int)一样来使用这个函数,比如创建一个中断函数数组!
PS:void *param 无类型的指针,可以指向任何数据类型。由于没有指定类型,所以该类指针在被赋值时都要加上相应类型的强制转换。