[求助] 一个C文件的全局变量声明问题

xy598646744   2015-4-28 10:02 楼主
最近人前几天在头问件上折腾了好久,主要是头文件里面的 嵌套问题,  后来曲线救国了。





现在问题是:

一个key.c文件中有些函数,这些函数有一个在key.c中的全局变量i。但这些函数在key.h中声明,在main.c中被调用,但全局变量i定义在哪里呢?我定义在key.c和main.c中都有问题。

回复评论 (7)

定义在key.c里,但是在key.h里用extern关键字声明
点赞  2015-4-28 10:10
函数和全局变量都是一样的,只能在一个工程里面只能定义一次。在别的文件里面用的时候声明一下就可以了,也就是加一个extern;
比如你要定义i,在main文件里面定义 ucahr i;在key.c里面加一句 extern uchar i;就行了。
随着工程文件的增大,这样写会越来越乱,有一些技巧还是需要慢慢掌握的。
点赞  2015-4-28 10:11
Error[e16]: Segment INTVEC (size: 0x60 align: 0x1) is too long for segment definition. At least 0x40 more bytes needed. The problem occurred while processing the segment  
placement command "-Z(CODE)INTVEC=FFE0-FFFF", where at the moment of placement the available memory ranges were "CODE:ffe0-ffff"
   Reserved ranges relevant to this placement:
   ffe0-ffff            INTVEC
Error while running Linker

点赞  2015-4-28 10:30


问题解决了,默认芯片是f149。我傻傻的没有更改芯片
点赞  2015-4-28 11:03
中断函数必须写在main.c 中吗?我想写在其他.c文件中,不知运行会不会出错
点赞  2015-4-28 11:07
引用: xy598646744 发表于 2015-4-28 11:07
中断函数必须写在main.c 中吗?我想写在其他.c文件中,不知运行会不会出错

不会出错
点赞  2015-4-28 11:09
外部文件想调用,要在变量前加extern的
点赞  2015-4-28 20:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复