求解__no_init

2019-03-24 11:06发布

__no_init  [数据类型]  变量名  @  地址
这个地址是必须有的吗?如果是,该怎么确定这个地址呢。__no_init的作用是不对变量进行初始化,那变量有值吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
armcu
1楼-- · 2019-03-24 18:03
< @是指定地址,__no_init 是一个SEGMENT,是给LINKER用的,定义到不初始化的块中去。
@就是指定地址,这个应该没什么好说的了,大部分编译器都这么用。你应该理解这个吧。
你定义全局变量的时候比如int char;  即使你没有赋值给他,编译器还是会给他一个初始化值0,编译的时候编译器把他分配到初始化为零的那个SEGMENG中去了。编译器默认的有几个块,初始化为零的块,初始化不为零的块,和不初始化的块,你可以定义自己的块,如XDATA,这个就是你自己定义的一个块,那你的这个块是个什么属性呢,就是,__no_init 属性,有了这个属性,编译器只给你分配空间,不给你初始化。
sint27
2楼-- · 2019-03-24 21:52
< :TI_MSP430_内容页_SA7 --> 地址不是必须的,
有带地址的一般和硬件相关,如头文件的寄存器的声明,而该地址在datasheet可查到
__no_init的作用是不对变量进行初始化,该变量在声明的同时不能初始化,但是声明过后可以对其赋值,所以该变量还是有值的
zzbaizhi
3楼-- · 2019-03-24 23:35
 精彩回答 2  元偷偷看……
armcu
4楼-- · 2019-03-25 03:16
zzbaizhi 发表于 2014-8-7 08:54
这个“不初始化的块”如何确定呀?

可以自己定义,具体定义方法看IDE的说明手册
zzbaizhi
5楼-- · 2019-03-25 03:27
sint27 发表于 2014-8-6 16:47
地址不是必须的,
有带地址的一般和硬件相关,如头文件的寄存器的声明,而该地址在datasheet可查到
__no_ ...

11.jpg
33.jpg

试着写了个小程序,出现问题,好像是没有给A分配空间,用的是MSP430F5438,请大侠再指点一下
sint27
6楼-- · 2019-03-25 08:35
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章