jasonli 发表于 2010-5-18 13:30:21

请问马老师,关于extern的

我在一个头文件里定义了一个数组并进行了初始化赋值操作,
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_555009.jpg
(原文件名:QQ截图未命名.jpg)
这个头文件已经被一个源文件引用,但是我现在在另一个源文件里又需要此数组,就用了外部声明extern uint code[],结果在外部声明的源文件中读取该数组时得到的值为0,请马老师指导!

xpstudio2003 发表于 2010-5-18 13:43:00

你应该 extern flash uint code....

jasonli 发表于 2010-5-18 14:06:39

回复【1楼】xpstudio2003 曹香鹏
-----------------------------------------------------------------------
试了一下,ok了,问一下,这是什么原因呢?为什么非得加flash?

biansf2001 发表于 2010-5-18 15:06:00

不加的话原型不匹配,会出错

jasonli 发表于 2010-5-18 17:28:02

回复【3楼】biansf2001 花溅泪
-----------------------------------------------------------------------

那就是变量怎么声明的,在用extern外部引用时还是怎么写,是吗?

sanji 发表于 2011-7-20 18:13:16

mark一下

leirui001 发表于 2011-7-20 19:22:10

回复【4楼】jasonli
-----------------------------------------------------------------------

是的
最好这样,但有的编译器不一样,可以省略掉一些
比如,一些编译器:
定义:int x;
声明:extern x;是可以的,但是变量怎么声明的,在用extern外部引用时还是怎么写,是最好的,又通用!

reflecter 发表于 2011-7-21 00:50:33

int型,往往是系统默认的,可以不写
比如short,其实它全名是short int

回复【2楼】jasonli
回复【1楼】xpstudio2003 曹香鹏
-----------------------------------------------------------------------
试了一下,ok了,问一下,这是什么原因呢?为什么非得加flash?
-----------------------------------------------------------------------
不加flash,可能解析成了extern (SRAM) uint code,被自动初始化为0了
还是编译器的风格吧。
编译时,应该会报错吧?因为无法链接到外部文件所定义的uint code。
页: [1]
查看完整版本: 请问马老师,关于extern的