野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10358|回复: 19

【STM32固件库知识点】出个C语言题目考考大家,声明和定义有什么区别

[复制链接]
发表于 2016-8-2 10:44:22 | 显示全部楼层 |阅读模式
下面这段代码摘自固件库头文件stm32f10x.h,那么这段代码是声明还是定义,编译之后,它到底开不开辟内存空间?

  1. typedef struct
  2. {
  3.         __IO uint32_t CRL;
  4.         __IO uint32_t CRH;
  5.         __IO uint32_t IDR;
  6.         __IO uint32_t ODR;
  7.         __IO uint32_t BSRR;
  8.         __IO uint32_t BRR;
  9.         __IO uint32_t LCKR;
  10. }GPIO_TypeDef;
复制代码



回复

使用道具 举报

发表于 2016-8-2 10:50:16 | 显示全部楼层
这段代码是声明,不开辟空间,现在就好像声明了一个结构体类型,里面有这几个成员,就好像是一个模具而已,并没有生产真正的变量,所以不会开辟空间。
回复 支持 反对

使用道具 举报

发表于 2016-8-2 10:52:08 来自手机 | 显示全部楼层
声明,不开辟空间,定义变量会开辟空间,这段是声明
回复 支持 反对

使用道具 举报

发表于 2016-8-2 10:53:17 | 显示全部楼层
声明不分配内存,定义需要分配内存,一个变量只能定义一次,在不同的文件里需要声明,用extern  复制黏贴
回复 支持 反对

使用道具 举报

发表于 2016-8-2 10:56:36 | 显示全部楼层
这里是结构体的声明,涉及到了两个知识点,一个是typedef的使用,一个是结构体的声明。声明是不开辟内存。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-2 11:02:50 | 显示全部楼层
minDragon 发表于 2016-8-2 10:56
这里是结构体的声明,涉及到了两个知识点,一个是typedef的使用,一个是结构体的声明。声明是不开辟内存。

不错不错                                 
回复 支持 反对

使用道具 举报

发表于 2016-8-2 11:09:49 | 显示全部楼层
都在分析啥子啊
回复 支持 反对

使用道具 举报

发表于 2016-8-2 11:10:36 | 显示全部楼层
声明是不会开辟空间的,回答完毕
回复 支持 反对

使用道具 举报

发表于 2016-8-2 11:16:18 | 显示全部楼层
这是个结构体声明,而且这个结构体在库中从来没有定义过变量并在内存中分配。即便GPIOA->CRL也不过是在操作外设区域。
下次来个有难度的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-2 11:50:05 | 显示全部楼层
繁星雨夜 发表于 2016-8-2 11:16
这是个结构体声明,而且这个结构体在库中从来没有定义过变量并在内存中分配。即便GPIOA->CRL也不过是在操作 ...

好。声明了这个寄存器结构体,作用就是把GPIO外设的基地址进行类型转换,强制转换成这个结构体类型的指针。
回复 支持 反对

使用道具 举报

发表于 2016-8-2 15:31:09 | 显示全部楼层
我表示来看答案
回复 支持 反对

使用道具 举报

发表于 2016-8-2 18:30:43 | 显示全部楼层
看了之后,果断把自己答案删了,果然是基础不牢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-2 18:52:48 | 显示全部楼层
望蓝天 发表于 2016-8-2 18:30
看了之后,果断把自己答案删了,果然是基础不牢。

回复 支持 反对

使用道具 举报

发表于 2016-8-2 19:53:54 | 显示全部楼层

为啥只看到更新了11集
回复 支持 反对

使用道具 举报

发表于 2016-8-2 19:54:06 | 显示全部楼层

火哥多出点这样的题目嘞,感觉很基础,很实在,能让基础不牢的人发现不足。
回复 支持 反对

使用道具 举报

发表于 2016-8-2 20:42:02 | 显示全部楼层
声明不需要分配内存空间,定义需要分配内存空间;
回复 支持 反对

使用道具 举报

发表于 2016-8-3 20:00:19 | 显示全部楼层
声明,不开辟空间
回复 支持 反对

使用道具 举报

发表于 2016-11-14 09:45:22 | 显示全部楼层
一个是一人喝稀粥,另外一个是抱得伊人归啊
回复 支持 反对

使用道具 举报

发表于 2017-1-12 11:09:02 | 显示全部楼层
定义会开辟空间,但是声明不会,应该是吧
回复 支持 反对

使用道具 举报

发表于 2017-1-12 17:48:42 | 显示全部楼层
学习学习学习学习学习学习学习学习学习学习学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-27 22:27 , Processed in 0.071690 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表