发新帖我要提问
12
返回列表
打印

这样定义对不对

[复制链接]
楼主: jiaxw
手机看帖
扫描二维码
随时随地手机跟帖
21
sanfuzi| | 2018-5-3 22:00 | 只看该作者 回帖奖励 |倒序浏览
@就是指定地址,这个应该没什么好说的了,大部分编译器都这么用。

使用特权

评论回复
22
gygp| | 2018-5-3 22:00 | 只看该作者
在宏定义里面都有一个关键字__no_init

使用特权

评论回复
23
chenci2013| | 2018-5-3 22:00 | 只看该作者
__no_init是IAR扩展语法里面的一个扩展关键字

使用特权

评论回复
24
biechedan| | 2018-5-3 22:01 | 只看该作者
@是一种语法。那么它的作用很明显就是将变量放置到对应的地址中。

使用特权

评论回复
25
wangdezhi| | 2018-5-3 22:01 | 只看该作者
@是指定地址

使用特权

评论回复
26
isseed| | 2018-5-3 22:02 | 只看该作者
后面不加@指定地址没有问题。

使用特权

评论回复
27
xietingfeng| | 2018-5-3 22:03 | 只看该作者
__no_init 不初始化

使用特权

评论回复
28
suzhanhua| | 2018-5-3 22:03 | 只看该作者
__no_init 是两个宏,这个是编译器定的

使用特权

评论回复
29
mituzu| | 2018-5-3 22:03 | 只看该作者
no_init用于变量声明。 以 MSP430系列单片机为例, 在默认情况下, MSP430的 C 语言 编译器将变量存放在主 RAM 中, 并在启动时对其进行初始化。

使用特权

评论回复
30
updownq| | 2018-5-3 22:04 | 只看该作者
定义到不初始化的块中去。

使用特权

评论回复
31
wangdezhi| | 2018-5-3 22:04 | 只看该作者
定义全局变量的时候比如int char;  即使你没有赋值给他,编译器还是会给他一个初始化值0

使用特权

评论回复
32
biechedan| | 2018-5-3 22:04 | 只看该作者
使用@,一个变量可以明确的制定一个存储地址。

使用特权

评论回复
33
chenci2013| | 2018-5-3 22:04 | 只看该作者
用是声明一个non-volatile类型的内存地址(Support non-valotile memory)。

使用特权

评论回复
34
gygp| | 2018-5-3 22:04 | 只看该作者
查看了《MSP430 IAR C/EC++ Compiler Reference Guide》内的IAR Language Extension Overview

使用特权

评论回复
35
sanfuzi| | 2018-5-3 22:04 | 只看该作者
define DEFC(name, address) __no_init volatile unsigned char name @ address;
#define DEFC(name, address) sfrb name = address;
这两种定义是等价的

使用特权

评论回复
36
suzhanhua| | 2018-5-3 22:04 | 只看该作者
具体什么意思我不大清楚。

使用特权

评论回复
37
xietingfeng| | 2018-5-3 22:04 | 只看该作者
@ address  指定具体存储位置,volatile 非易失性的。

使用特权

评论回复
38
isseed| | 2018-5-3 22:04 | 只看该作者
用no_init主要是为了防止看门狗导致系统复位后数据重初始化。

使用特权

评论回复
39
mituzu| | 2018-5-3 22:04 | 只看该作者
在 no_init变量的声明中,不能含有初始化。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则