在函数中定义一个GPIO_InitTypeDef类型的对象,

为了弄清GPIO_InitTypeDef类型,我去其包含的头文件bsp_led.h中查看,发现无相关定义

我又去其头文件中包含的stm32f4xx.h文件中查看,还是没有,最后知道其定义在stm32f4xx_gpio.h文件中,该文件包含了stm32f4xx.h

然后我就晕了,如果要使用GPIO_InitTypeDef,不是应该直接包含stm32f4xx_gpio.h,或者包含一个包含头文件stm32f4xx_gpio.h的其他.h文件,
但是现在却可以使用,是因为stm32f4xx_gpio.h文件中包含了stm32f4xx.h,而我的文件中包含了stm32f4xx.h的原因吗?如果是这样的话include不就是双向的吗,而不是单向的
在我的理解中,include是单向的,比如a包含b,b包含c,我文件中include a 可以认为a,b,c中的内容我都能用
而这里是,a包含b,c包含a,然后我文件中include a,然后a,b,c中的内容我还是都能用
你的理解没问题,不过你要确定。
a包含b,你include a,你能确定a、b中都没包含c吗,也许a、b的其他头文件已经把c包含了
找找看有没有忽略包含的地方