keil stm32在多个文件中定义全局变量问题

[复制链接]
 楼主| luckytoad 发表于 2010-6-27 08:40 | 显示全部楼层 |阅读模式
本帖最后由 luckytoad 于 2010-6-27 08:42 编辑

1、我在其中的一个.C中定义了全局变量
/* Private variables ---------------------------------------------------------*/
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_ICInitTypeDef  TIM_ICInitStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
在另一个。c中也定义了同样的全局变量,为什么编译不过去呢?重定义了
关键是我并没有将全局变量定义到。h中,让别人引用?
2、函数声明也是这样子的
a.c 中作了个void NVIC_Configuration(void)
b.c中有做个void NVIC_Configuration(void)
2个函数均是私有,没放到。h中声明。怎么也是重定义?
3、.h中声明 void fuc(void)不加extern,就能能被别的函数引用!为啥

kiel3
zchong 发表于 2010-6-27 09:06 | 显示全部楼层
1、基本的C语法,在一个c中定义了某个变量,在另一个C中需要extern声明。
2、一般的做法是如果该函数仅在该文件内引用,则定义成static
3、因为include了
 楼主| luckytoad 发表于 2010-6-27 11:58 | 显示全部楼层
多谢
1、以前一直是在一个c中定义了某个变量,在另一个C中需要extern声明。
2、在一个c中定义了某个函数,在另一个C也是需要extern声明。但现在好像不用extern声明也行,STM32所有的lib和例程均看不到extern声明,不知为什么?
3、如果该函数仅在该文件内引用,则定义成static,那么函数呢?如果仅在仅在该文件内引用,怎么办呢?
haitao10086 发表于 2010-6-28 16:57 | 显示全部楼层
不include,c中定义的函数默认是内部链接的。
 楼主| luckytoad 发表于 2010-6-29 21:45 | 显示全部楼层
4# haitao10086
centimetre 发表于 2010-6-30 07:40 | 显示全部楼层
函数都是全局的。
如果全局变量不用extern声明,其他文件也可以引用到的。只是会有warning给你
www.cmtekchina.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

72

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部