打印

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

[复制链接]
16849|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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中定义的函数默认是内部链接的。

使用特权

评论回复
5
luckytoad|  楼主 | 2010-6-29 21:45 | 只看该作者
4# haitao10086

使用特权

评论回复
6
centimetre| | 2010-6-30 07:40 | 只看该作者
函数都是全局的。
如果全局变量不用extern声明,其他文件也可以引用到的。只是会有warning给你
www.cmtekchina.com

使用特权

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

本版积分规则

0

主题

72

帖子

2

粉丝