与struct有关的问题
我正在尝试调用带有签名的库函数与struct有关的问题,c,C,我正在尝试调用带有签名的库函数 void GPIO_Init(GPIO_InitTypeDef* GPIO_InitStruct) 其中,GPIO_InitTypeDef是一个typedef结构 我尝试了以下几点: GPIO_InitTypeDef NE1 = { 7, GPIO_Mode_AF, GPIO_Speed_25MHz, GPIO_OType_PP, GPIO_PuPd_UP }; GPIO_Init(NE1); 但我得到了一个编译器错误 错误:“GPIO_Init”的参
void GPIO_Init(GPIO_InitTypeDef* GPIO_InitStruct)
其中,GPIO_InitTypeDef
是一个typedef
结构
我尝试了以下几点:
GPIO_InitTypeDef NE1 = {
7, GPIO_Mode_AF, GPIO_Speed_25MHz, GPIO_OType_PP, GPIO_PuPd_UP
};
GPIO_Init(NE1);
但我得到了一个编译器错误
错误:“GPIO_Init”的参数1的类型不兼容
“struct GPIO_InitTypeDef*”但参数的类型为“GPIO_InitTypeDef”
我还尝试使用struct
关键字:
struct GPIO_InitTypeDef NE1 = {
7, GPIO_Mode_AF, GPIO_Speed_25MHz, GPIO_OType_PP, GPIO_PuPd_UP
};
GPIO_Init(NE1);
但是我得到了编译器错误
错误:“NE1”的存储大小未知
我做错了什么,调用GPIO\u Init
的正确方法是什么?您需要使用:
GPIO_Init (&NE1); // <- Note the '&' indicating pointer-to
但是你的NE1
变量是一个实际的结构,所以你必须使用&
来获取指向它的指针,这样你才能传递它
因为您试图传递的是结构而不是指向结构的指针,这就是导致您的
不兼容类型
错误的原因。谢谢。我想这整个困惑是因为我没有正确理解我在做什么。你能解释一下吗?@Randomblue,当然,我添加了一些额外的信息,希望能让它更清楚。
void GPIO_Init (GPIO_InitTypeDef * GPIO_InitStruct)
// ^
// pointer