2019-07-24 13:34发布
mack13013 发表于 2018-2-22 18:27 在a_driver.c和main.c中都有i这个全局变量,两个i重定义了。这个无法通过在a_driver.h中添加唯一编译宏来避 ...
最多设置5个标签!
在a_driver.c和main.c中都有i这个全局变量,两个i重定义了。这个无法通过在a_driver.h中添加唯一编译宏来避免。
看了一下你的项目,发现你在头文件里定义了一个uint8 i;,在某个源文件里引用了外部全局变量i(比如在stm32f10x_it.c中有extern uint8 i;),
实际上你用反了,一般是在源文件(就是文件名xxxx.c的文件)中定义变量(比如此例中可以在a_driver.c中如下定义uint8 i;),然后在头文件(xxxx.h)中表明这个变量是外部变量(本例中可在a_driver.h中做extern uint8 i;声明),
然后在任何一个用到全局变量的源文件(比如main.c文件)中只要包含头文件(本例中a_driver.h)即可使用全局变量(本例中的i)。
原来是这样。。。我把a_driver.h里面的变量i搬到a_driver.c就没有问题了,哈,谢谢你,我会再想想是哪些概念搞错了。。。
一周热门 更多>