作者MaxHaru (懂得放手..才是王道)
看板C_and_CPP
标题[讨论] typedef的问题请教
时间Sat Jun 18 20:07:16 2016
最近看到一个typedef struct敍述看不太懂,
在此跟大家请教一下..
以下是在Keil C环境所写的code..
//Struct的定义
typedef struct _GPIO
{
...
}GPIO_REG, *P_GPIO_REG;
//Struct变数的宣告
GPIO_REG gpio_reg _at_ GPIO_BASE_ADDR;
以上, 我不太懂的地方是 "*P_GPIO_REG"这个部份,
这是做什麽用的呢?
要如何使用呢?
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.176.161
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1466251638.A.1C1.html
※ 编辑: MaxHaru (36.226.176.161), 06/18/2016 20:20:37
1F:推 LPH66: 读 typedef 宣告法: 把 typedef 遮起来看 06/18 20:36
2F:→ LPH66: 这里它变成了 struct ... GPIO_REG, *P_GPIO_REG; 06/18 20:37
3F:→ LPH66: 即是宣告前者为此 struct, 後者为指向此 struct 形态的指标 06/18 20:38
4F:→ LPH66: 那麽这就是定义前者此名为这 struct 型态 06/18 20:38
5F:→ LPH66: 後者此名为指向此形态的指标 06/18 20:38
6F:→ LPH66: 指标型态 06/18 20:39
7F:推 chuegou: GPIO_REG 新名称 *P_GPIO_REG 指向此型态的指标 06/18 20:57
8F:→ james732: 其实我觉得可以写GPIO_REG *就没必要多一个P_GPIO_REG 06/18 21:18
9F:→ james732: 会出现这种写法的人应该也有写过WinAPI XD 06/18 21:18
10F:→ Caesar08: 每次问到这个都要请LPH大神出来解答一下 XD 06/18 22:37
11F:→ MaxHaru: 这篇被m了, 是我做错什麽了吗?? 06/18 22:56
12F:推 EdisonX: 没,你的问题很好,所以被 m 了。 06/18 23:39
==================================================
谢谢各位的说明, 我说明一下我的理解, 看看对不对..
这样的typedef struct定义了两个东西,
1. GPIO_REG: 即该struct
使用方法: GPIO_REG gpio_reg; //宣告一个这种struct的变数gpio_reg
2. P_GPIO_REG: 可以用来指定这种struct的pointer
使用方法: P_GPIO_REG p_gpio_reg = &gpio_reg;
/*
// 宣告一个可以用来指到该struct的point变数p_gpio_reg,
// 并将其指到gpio_reg;
// 效果等同於GPIO_REG*p_gpio_reg = &gpio_reg;
*/
※ 编辑: MaxHaru (36.226.176.161), 06/19/2016 00:21:51
14F:推 Ethical: 了解 06/22 17:22