如下代码:
头文件:
- typedef struct aBlinkGpioPinOutAbst_{
- void (*initAsOutput)(void);
- void (*high)(void);
- void (*low)(void);
- }aBlinkGpioPinOutAbst;
-
-
- typedef struct aBlinkGpioAbst_{
- #if GPIO_CONFIG_PA0 == GPIO_CONFIG_AS_OUTPUT
- aBlinkGpioPinOutAbst pa0;
- #elif GPIO_CONFIG_PA0 == GPIO_CONFIG_AS_INPUT
- aBlinkGpioPinInAbst pa0;
- #elif GPIO_CONFIG_PA0 == GPIO_CONFIG_AS_DOUBLE
- aBlinkGpioPinDoubleAbst pa0;
- #endif
- aBlinkGpioPinOutAbst* test;
- }aBlinkGpioAbst;
C文件:
- aBlinkGpioPinOutAbst pt;
-
- aBlinkGpioAbst gpio = {
- .pa0 = pt,
- };
结果报错如下:

结构体应该代表的是一片内存,应该像基本类型一样可以直接赋值呀,为什么会出错?
使用如下初始化:
- aBlinkGpioPinOutAbst pt;
-
- aBlinkGpioAbst gpio = {
- .test = &pt,
- };
可以编译了:

但是代价要使用->而不是.来调用。
使用
void x_aBlinkGpioInit(){
aBlinkGpio.pa0 = pa0;
}