欢迎光临
我们一直在努力

void (*init)(u32 base, u32 size, u8 addr);和typedef void (*init)(u32 base, u32 size, u8 addr);的区别是

1.区别在于第一个声明了一个名为init的函数指针变量(或函数指针类型的变量声明),第二个声明了一个类型别名init,表示一个指向特定函数签名的函数指针类型。
2.第一个语句声明了一个变量init,它是一个指向函数的指针,该函数接受(u32, u32, u8)参数,返回void。这个变量本身可以被赋值,然后通过它调用函数。
3.第二个语句定义了一个类型名init,它代表一个函数指针类型。之后可以用init来声明其他变量,例如init func_ptr;,相当于声明了一个指向相同签名的函数指针变量。

举例说明:
没有typedef:void (*init)(…); 这里init是一个变量,我们可以直接对它赋值:init = some_function;。

有typedef:typedef void (*init)(…); 这里init是一个类型,我们可以用init定义变量:init my_func_ptr;,然后my_func_ptr = some_function;。

总结:第一个是变量声明,第二个是类型声明。

赞(0)
未经允许不得转载:171主机测评 » void (*init)(u32 base, u32 size, u8 addr);和typedef void (*init)(u32 base, u32 size, u8 addr);的区别是
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址